假设我有一个这样的结构定义:
struct SomeStruct {
1: optional binary content;
2: optional binary newConetent;
}
在不影响部署的情况下弃用第一个字段(“内容”)的最佳做法是什么?将新代码部署到多个使用这种 thrift 结构的应用程序中吗? (假设某些应用程序在部署 之前仍在使用“内容”字段 )?
谢谢!
最佳答案
推荐的解决方案是注释掉该字段,但将其保留在 IDL 中。这可以防止字段 ID 稍后被重用。否则当然会产生不兼容。
如果“客户端正在使用”意味着他们仅访问 RPC 的过时字段,那么对于 Thrift 来说这不是问题。 Thrift 的行为就像一个新领域。
但是,如果您的意思是该字段用于序列化并且旧数据包含需要以某种方式转换为新格式的相关信息,则您必须在 IDL 中将该字段保持事件状态。您可以考虑重命名该字段,以使其对 IDL 的目标受众可见。
关于deployment - 如何弃用 .thrift 文件中的可选字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32530334/