Экономия преобразования необязательно по умолчанию или требуется - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть структура thrift

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

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

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

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

1 Ответ

0 голосов
/ 22 ноября 2018

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

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

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

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

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

Для дальнейшего чтения по теме вы можетехочу проконсультироваться с чрезвычайно рекомендуемым « отсутствующим руководством» Дивакера Гупты .

...