"No field key specified for" Thrift 生成器警告
"No field key specified for" warning with Thrift generator
收到警告:
No field key specified for bytes, resulting protocol may have
conflicts or not be backwards compatible!
尝试生成以下行时:
void uploadChunk(binary bytes)
我尝试了其他几个参数名称,但无法使用 Google 搜索找到有关此警告的信息。
想法?
哦,我在binary
前加了1:
,警告消失了:
void uploadChunk(1:binary bytes)
Thrift 生成的某些语言可能需要字段键,1
是字段键。
应用数字字段键(或字段 ID)的解决方案是绝对正确的。
为了兼容性,Thrift 允许没有 ID 的字段。在内部,负数分配给这些字段。但是,强烈建议指定字段 ID> 0
,因为如果您在给定成员之前包含更多成员,或者如果您随机分配成员,自动分配的编号可能会发生变化, 由于不同的自动编号字段,两者都会导致不兼容。
这正是发出警告的原因。
为了补充 JensG 的正确答案,下面将详细解释字段的自动分配编号可能导致不兼容的原因:
如果服务器是 运行 具有三个未编号参数的 Thrift 接口,而客户端是 运行 仅具有两个未编号参数的该接口的旧版本,则服务器可能无法正确关联提供给可用参数的值。如果它们被编号,就不会混淆。编号是支持所谓的 schema evolution.
的好主意
收到警告:
No field key specified for bytes, resulting protocol may have conflicts or not be backwards compatible!
尝试生成以下行时:
void uploadChunk(binary bytes)
我尝试了其他几个参数名称,但无法使用 Google 搜索找到有关此警告的信息。
想法?
哦,我在binary
前加了1:
,警告消失了:
void uploadChunk(1:binary bytes)
Thrift 生成的某些语言可能需要字段键,1
是字段键。
应用数字字段键(或字段 ID)的解决方案是绝对正确的。
为了兼容性,Thrift 允许没有 ID 的字段。在内部,负数分配给这些字段。但是,强烈建议指定字段 ID> 0
,因为如果您在给定成员之前包含更多成员,或者如果您随机分配成员,自动分配的编号可能会发生变化, 由于不同的自动编号字段,两者都会导致不兼容。
这正是发出警告的原因。
为了补充 JensG 的正确答案,下面将详细解释字段的自动分配编号可能导致不兼容的原因:
如果服务器是 运行 具有三个未编号参数的 Thrift 接口,而客户端是 运行 仅具有两个未编号参数的该接口的旧版本,则服务器可能无法正确关联提供给可用参数的值。如果它们被编号,就不会混淆。编号是支持所谓的 schema evolution.
的好主意