我有一个节俭的结构
struct Message {
1: optional int userID;
...
}
将其更改为默认需求是否安全?
struct Message {
1: int userID;
...
}
如果我知道它总是已设置?那么“需要”呢?
如中所述这个答案 https://stackoverflow.com/questions/37558302/how-do-i-make-a-required-thrift-field-optional,Thrift 中存在三个级别的(所谓的)需求:
-
required
:读取时必须存在,写入时必须设置
-
optional
:可以设置也可以不设置,完全可选
- “默认”:读取时可能不存在,总是写入(除非它是
null
指针)
回答所提出的问题:
改变是安全的optional
恢复为默认值(即删除optional
关键词)。
改变optional
to required
可能会破坏兼容性。除非您确保所有客户端/服务器都相应更新,否则旧端可能不会为此类字段提供值。在这种情况下,另一端将拒绝传入的请求或响应不完整,因为required
接收到的数据中缺少字段。
要进一步阅读该主题,您可能需要咨询 Diwaker Gupta 强烈推荐的“缺少指南 https://diwakergupta.github.io/thrift-missing-guide/#_defining_structs".
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)