如何弃用 .thrift 文件中的可选字段?
How to Deprecate an Optional Field in .thrift Files?
假设我有一个这样的结构定义:
struct SomeStruct {
1: optional binary content;
2: optional binary newConetent;
}
在不影响部署的情况下弃用第一个字段 ("content") 的最佳做法是什么?新代码的部署将被部署到使用这种节俭结构的多个应用程序中? (假设某些应用程序在部署之前仍在使用"content"字段)?
谢谢!
推荐的解决方案是将该字段注释掉,但将其保留在 IDL 中。这可以防止字段 ID 以后被重新用于某事。否则当然会产生不兼容性。
如果 "in use by clients" 意味着他们正在访问仅用于 RPC 的过时字段,这对 Thrift 来说不是问题 w/regard。 Thrift 的行为与新字段一样。
但是,如果您的意思是该字段用于序列化并且旧数据包含需要以某种方式转换为新格式的相关信息,则您必须在 IDL 中使该字段保持活动状态。您可以考虑重命名该字段,以使其对您的 IDL 的目标受众可见。
假设我有一个这样的结构定义:
struct SomeStruct {
1: optional binary content;
2: optional binary newConetent;
}
在不影响部署的情况下弃用第一个字段 ("content") 的最佳做法是什么?新代码的部署将被部署到使用这种节俭结构的多个应用程序中? (假设某些应用程序在部署之前仍在使用"content"字段)?
谢谢!
推荐的解决方案是将该字段注释掉,但将其保留在 IDL 中。这可以防止字段 ID 以后被重新用于某事。否则当然会产生不兼容性。
如果 "in use by clients" 意味着他们正在访问仅用于 RPC 的过时字段,这对 Thrift 来说不是问题 w/regard。 Thrift 的行为与新字段一样。
但是,如果您的意思是该字段用于序列化并且旧数据包含需要以某种方式转换为新格式的相关信息,则您必须在 IDL 中使该字段保持活动状态。您可以考虑重命名该字段,以使其对您的 IDL 的目标受众可见。