获得警告:
没有为字节指定字段键,导致协议可能有 冲突或不向后兼容!
尝试生成以下行时:
void uploadChunk(binary bytes)
我尝试了其他几个参数名称,并且无法使用Google搜索找到有关此警告的信息。
想法?
答案 0 :(得分:5)
哦,我在1:
之前添加了binary
,警告消失了:
void uploadChunk(1:binary bytes)
Thrift可能生成一些需要字段密钥的语言,1
是字段密钥。
答案 1 :(得分:2)
要添加JensG的答案是正确的,下面将解释自动分配字段编号可能导致不兼容的原因:
如果服务器正在运行具有三个未编号参数的Thrift接口,并且客户端运行的旧版本的接口只有两个未编号的参数,则服务器可能无法正确关联提供给可用参数的值。如果它们被编号,则没有混淆。编号是支持所谓schema evolution的好主意。
答案 2 :(得分:1)
应用数字字段键(或字段ID)的解决方案绝对正确。
为了兼容性,Thrift允许没有ID的字段。在内部,为这些字段分配负数。但是,强烈建议您指定字段ID > 0
,因为如果您在给定成员之前包含更多成员,或者如果您在成员周围洗牌,则自动分配的数字可能会更改由于不同的自动编号字段导致不兼容。
这正是警告的原因。