Предупреждение "Не указан ключ поля" для генератора Thrift
Получение предупреждения:
Не указан ключ поля для байтов, итоговый протокол может иметь конфликты или не иметь обратной совместимости!
При попытке сгенерировать следующую строку:
void uploadChunk(binary bytes)
Я пробовал несколько других имен параметров и не смог найти информацию об этом предупреждении с помощью поиска Google.
Идеи?
3 ответа
О, я добавил 1:
до binary
и предупреждение исчезло:
void uploadChunk(1:binary bytes)
Вероятно, есть какой-то язык, который генерирует Thrift, которому нужен ключ поля и 1
это ключ поля.
Чтобы добавить ответ от JensG, который является правильным, причина, по которой автоматически назначенная нумерация ваших полей может привести к несовместимости, объясняется более подробно ниже:
Если на сервере работает интерфейс Thrift с тремя ненумерованными параметрами, а на клиенте установлена более старая версия этого интерфейса с только двумя ненумерованными параметрами, сервер может некорректно соотносить предлагаемые значения с доступными параметрами. Если они пронумерованы, то здесь нет путаницы. Нумерация - это хорошая идея для поддержки так называемой эволюции схемы.
Решение применить числовой ключ поля (или идентификатор поля) является абсолютно правильным.
Thrift позволяет поля без идентификатора для совместимости. Внутри таких полей присваивается отрицательное число. Тем не менее, настоятельно рекомендуется указать идентификатор поля > 0
потому что автоматически назначенные номера могут измениться, если вы добавите больше участников перед данным участником, или если вы перемешаете членов вокруг, что приведет к несовместимости из-за различных полей с автоматически нумерованными полями.
И это как раз причина предупреждения.