V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuelang
V2EX  ›  程序员

用过 c++ protobuf 的可以来挑战下-最诡异丢失字段问题

  •  
  •   xuelang ·
    selfboot · 234 天前 · 386 次点击
    这是一个创建于 234 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们的一个服务中有这样一个简单的逻辑,设置好 proto 协议中的字段,然后把 pb 转换成 json 后,发送一个 http 请求。在最近的一个变更中,在原来的 proto 里面增加了一个字段 user_type ,然后给这个字段赋值。改动很简单,正常来说,新的 http 请求中 json 中应该在相应位置多一个 user_type 字段。但是发到测试环境后发现,新的请求 json 里没有新增字段,原来有的字段也丢失了不少!

    这就有点见鬼了,项目中使用了几年的 protobuf ,从来没遇见类似的问题呀。只是增加一个 optional 字段然后赋值,为啥老的字段也没了?

    首先排除一些可能的点:

    • 代码逻辑问题:检查了整个服务代码,确认了没有地方会去删除设置的字段;
    • protoc 的版本不一致:用一样的 protoc 编译 proto 文件的。

    看完写下自己的猜测点。

    最后可以在文章 C++ 中使用 Protobuf 诡异的字段丢失问题排查 来揭秘

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2720 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 794ms · UTC 15:26 · PVG 23:26 · LAX 08:26 · JFK 11:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.