如何弃用 .thrift 文件中的可选字段?

Yib*_*Lin 7 deployment thrift

假设我有一个这样的结构定义:

struct SomeStruct {
  1: optional binary content;
  2: optional binary newConetent;
}
Run Code Online (Sandbox Code Playgroud)

在不影响部署的情况下弃用第一个字段(“内容”)的最佳实践是什么?新代码的部署将被部署到使用此 Thrift 结构的多个应用程序中?(假设某些应用程序在部署之前仍在使用“内容”字段)?

谢谢你!

Jen*_*nsG 5

推荐的解决方案是注释掉该字段,但将其保留在 IDL 中。这可以防止字段 ID 稍后被重复使用。否则当然会产生不兼容性。

如果“由客户端使用”意味着它们仅访问 RPC 的过时字段,那么对于 Thrift 来说这不是问题。Thrift 的行为就像新领域一样。

但是,如果您的意思是该字段用于序列化,并且旧数据包含需要以某种方式转换为新格式的相关信息,则必须在 IDL 中将该字段保持为活动状态。您可以考虑重命名该字段,以便 IDL 的目标受众可以看到它。