Экономия преобразования необязательно по умолчанию или требуется

У меня есть структура экономии

struct Message {
    1: optional int userID;
    ...
} 

Это безопасная операция, чтобы изменить его на требование по умолчанию?

struct Message {
    1: int userID;
    ...
} 

Если я знаю, что это всегда установлено? А как насчет "требуется"?

1 ответ

Как указано в этом ответе, в Thrift есть три степени (так называемой) обязательности:

  • required: должен существовать при чтении, должен быть установлен при записи
  • optional: может быть или не быть установлен, полностью необязательно
  • "по умолчанию": может не существовать при чтении, всегда пишется (если это не null указатель)

Чтобы ответить на заданный вопрос (ы):

  1. Безопасно менять optional по умолчанию (т.е. удалить optional ключевое слово).

  2. изменения optional в required может нарушить совместимость. Если вы не убедитесь, что все клиенты / серверы обновлены соответствующим образом, может случиться так, что старая сторона не предоставит значение для такого поля. В этом случае другой конец отклонит входящий запрос или ответ как неполный, потому что required поле отсутствует в полученных данных.

Для дальнейшего чтения по этому вопросу вы можете обратиться к " Руководству по отсутствию" Дивакера Гупты.

Другие вопросы по тегам