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]