diff --git a/src/json2pb/json_to_pb.cpp b/src/json2pb/json_to_pb.cpp index c048a8b8c9..00e12d981e 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 8e7e4f32e3..c1fd528650 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 d442d3b764..aad127c87e 100644 --- a/test/BUILD.bazel +++ b/test/BUILD.bazel @@ -266,6 +266,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 @@ -273,6 +274,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", }, )