我们的一个服务中有这样一个简单的逻辑,设置好 proto 协议中的字段,然后把 pb 转换成 json 后,发送一个 http 请求。在最近的一个变更中,在原来的 proto 里面增加了一个字段 user_type ,然后给这个字段赋值。改动很简单,正常来说,新的 http 请求中 json 中应该在相应位置多一个 user_type 字段。但是发到测试环境后发现,新的请求 json 里没有新增字段,原来有的字段也丢失了不少!
这就有点见鬼了,项目中使用了几年的 protobuf ,从来没遇见类似的问题呀。只是增加一个 optional 字段然后赋值,为啥老的字段也没了?
首先排除一些可能的点:
看完写下自己的猜测点。
最后可以在文章 C++ 中使用 Protobuf 诡异的字段丢失问题排查 来揭秘