This is an automated email from the ASF dual-hosted git repository.

wwbmmm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brpc.git


The following commit(s) were added to refs/heads/master by this push:
     new 12e214ff Use stream json api in protobuf v31+ (#3342)
12e214ff is described below

commit 12e214ff1e74f35a715803570797e02d8f1fbd89
Author: Bright Chen <[email protected]>
AuthorDate: Sun Jun 28 12:15:12 2026 +0800

    Use stream json api in protobuf v31+ (#3342)
---
 src/json2pb/json_to_pb.cpp | 9 +++++++++
 src/json2pb/pb_to_json.cpp | 9 +++++++++
 test/BUILD.bazel           | 2 ++
 3 files changed, 20 insertions(+)

diff --git a/src/json2pb/json_to_pb.cpp b/src/json2pb/json_to_pb.cpp
index c048a8b8..00e12d98 100644
--- a/src/json2pb/json_to_pb.cpp
+++ b/src/json2pb/json_to_pb.cpp
@@ -733,6 +733,14 @@ bool 
ProtoJsonToProtoMessage(google::protobuf::io::ZeroCopyInputStream* json,
                              google::protobuf::Message* message,
                              const ProtoJson2PbOptions& options,
                              std::string* error) {
+#if GOOGLE_PROTOBUF_VERSION >= 6031000
+    auto st = google::protobuf::json::JsonStreamToMessage(json, message, 
options);
+    bool ok = st.ok();
+    if (!ok && NULL != error) {
+        *error = st.ToString();
+    }
+    return ok;
+#else
     TypeResolverUniqueptr type_resolver = GetTypeResolver(*message);
     std::string type_url = GetTypeUrl(*message);
     butil::IOBuf buf;
@@ -753,6 +761,7 @@ bool 
ProtoJsonToProtoMessage(google::protobuf::io::ZeroCopyInputStream* json,
         *error = "Fail to ParseFromCodedStream";
     }
     return ok;
+#endif // GOOGLE_PROTOBUF_VERSION >= 6031000
 }
 
 bool ProtoJsonToProtoMessage(const std::string& json, 
google::protobuf::Message* message,
diff --git a/src/json2pb/pb_to_json.cpp b/src/json2pb/pb_to_json.cpp
index 8e7e4f32..c1fd5286 100644
--- a/src/json2pb/pb_to_json.cpp
+++ b/src/json2pb/pb_to_json.cpp
@@ -416,6 +416,14 @@ bool ProtoMessageToProtoJson(const 
google::protobuf::Message& message,
         }
         return false;
     }
+#if GOOGLE_PROTOBUF_VERSION >= 6031000
+    auto st = google::protobuf::json::MessageToJsonStream(message, json, 
options);
+    bool ok = st.ok();
+    if (!ok && NULL != error) {
+        *error = st.ToString();
+    }
+    return ok;
+#else
     butil::IOBuf buf;
     butil::IOBufAsZeroCopyOutputStream output_stream(&buf);
     if (!message.SerializeToZeroCopyStream(&output_stream)) {
@@ -432,6 +440,7 @@ bool ProtoMessageToProtoJson(const 
google::protobuf::Message& message,
         *error = st.ToString();
     }
     return ok;
+#endif // GOOGLE_PROTOBUF_VERSION >= 6031000
 }
 
 bool ProtoMessageToProtoJson(const google::protobuf::Message& message, 
std::string* json,
diff --git a/test/BUILD.bazel b/test/BUILD.bazel
index 3efe804c..8647b510 100644
--- a/test/BUILD.bazel
+++ b/test/BUILD.bazel
@@ -255,6 +255,7 @@ generate_unittests(
     # real-time waits exceed Bazel's default per-test 300s (size=medium) limit
     # on contended CI runners, causing TIMEOUT failures. Raise its limit to
     # size=large (900s).
+    # brpc_load_balancer_unittest.cpp also has the same problem.
     #
     # NB: do NOT shard this binary. Its TEST_F share fixed loopback endpoints
     # and global state; running shards as parallel processes makes a
@@ -262,6 +263,7 @@ generate_unittests(
     # on the same port and fail. size=large is the only safe lever here.
     per_test_size = {
         "brpc_channel_unittest.cpp": "large",
+        "brpc_load_balancer_unittest.cpp": "large",
     },
 )
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to