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

标签 deployment thrift

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

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/

相关文章:

ruby-on-rails - 我可以在同一台服务器上运行 Rails 2 和 Rails 3 应用程序吗?

apache-spark - 在 Apache Spark SQL 中,如何从 HiveContext 关闭元存储连接

unit-testing - 是否有必要对 Apache Thrift 生成的代码进行单元测试?

java - 在cassandra中存储小文件

java - 无法将 Web 应用程序部署到上下文路径中的服务器?

java - Artifactory 中的 GAVC 搜索不考虑分类器

Android - 在没有开发人员选项的情况下使用 ADB

java - 在 Tomcat 上部署 JSF war 时出现异常

c++ - apache thrift,序列化未签名

java - 已知的 RPC 协议(protocol)置于 JMS 之上