Номер удалённого поля в protobuf отдали новому полю, и старые клиенты сошли с ума
Было:
message Order {
int64 id = 1;
string promo_code = 2;
}
Промокоды убрали, а под тем же номером добавили скидку:
message Order {
int64 id = 1;
int32 discount_percent = 2;
}
Сервер обновили, часть клиентов осталась на старом контракте. Что произойдёт?
- Старые клиенты прочитают поле 2 по старому типу и получат мусор или ошибку
- Ничего: protobuf сопоставляет поля по имени, promo_code просто будет пустым
- gRPC откажет в вызове из-за несовпадения версий контракта
- Старые клиенты увидят discount_percent как строку «10» и продолжат работу
