• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xuelang
V2EX  ›  程序员

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

  •  
  •   xuelang ·
    selfboot · Sep 7, 2023 · 1078 views
    This topic created in 1007 days ago, the information mentioned may be changed or developed.

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

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

    首先排除一些可能的点:

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

    看完写下自己的猜测点。

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

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   891 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 20:51 · PVG 04:51 · LAX 13:51 · JFK 16:51
    ♥ Do have faith in what you're doing.