Экономия преобразования необязательно по умолчанию или требуется
У меня есть структура экономии
struct Message {
1: optional int userID;
...
}
Это безопасная операция, чтобы изменить его на требование по умолчанию?
struct Message {
1: int userID;
...
}
Если я знаю, что это всегда установлено? А как насчет "требуется"?
1 ответ
Как указано в этом ответе, в Thrift есть три степени (так называемой) обязательности:
required
: должен существовать при чтении, должен быть установлен при записиoptional
: может быть или не быть установлен, полностью необязательно- "по умолчанию": может не существовать при чтении, всегда пишется (если это не
null
указатель)
Чтобы ответить на заданный вопрос (ы):
Безопасно менять
optional
по умолчанию (т.е. удалитьoptional
ключевое слово).изменения
optional
вrequired
может нарушить совместимость. Если вы не убедитесь, что все клиенты / серверы обновлены соответствующим образом, может случиться так, что старая сторона не предоставит значение для такого поля. В этом случае другой конец отклонит входящий запрос или ответ как неполный, потому чтоrequired
поле отсутствует в полученных данных.
Для дальнейшего чтения по этому вопросу вы можете обратиться к " Руководству по отсутствию" Дивакера Гупты.