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

时间:2015-09-11 18:54:02

标签: deployment thrift

我们说我有这样的结构定义:

struct SomeStruct {
  1: optional binary content;
  2: optional binary newConetent;
}

在不影响部署的情况下,弃用第一个字段("内容")的最佳做法是什么?新代码的部署将是使用这种节俭结构的多个应用程序? (假设某些应用程序仍然在部署之前使用"内容"字段 )?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

如果“客户端正在使用”意味着他们只访问RPC的过时字段,那么就Thrift而言这不是问题。节俭的行为就像新领域一样。

但是,如果您的意思是该字段用于序列化,而旧数据包含需要以某种方式转换为新格式的相关信息,则必须将该字段保留在IDL中。您可以考虑重命名该字段,以使其对IDL的目标受众可见。