diff --git a/cloud/src/common/http_helper.cpp b/cloud/src/common/http_helper.cpp index 1d21cccde15848..5ddd711dda65f5 100644 --- a/cloud/src/common/http_helper.cpp +++ b/cloud/src/common/http_helper.cpp @@ -710,7 +710,7 @@ HttpResponse process_statistics_recycle(RecyclerServiceImpl* service, brpc::Cont "failed to parse StatisticsRecycleRequest"); } MetaServiceCode code = MetaServiceCode::OK; - std::string msg; + std::string msg = "OK"; service->statistics_recycle(req, code, msg); return http_text_reply(code, msg, msg); } @@ -721,7 +721,7 @@ HttpResponse process_recycle_copy_jobs(RecyclerServiceImpl* service, brpc::Contr return http_json_reply(MetaServiceCode::INVALID_ARGUMENT, "no instance id"); } MetaServiceCode code = MetaServiceCode::OK; - std::string msg; + std::string msg = "OK"; recycle_copy_jobs(service->txn_kv(), *instance_id, code, msg, service->recycler()->thread_pool_group(), service->txn_lazy_committer()); return http_text_reply(code, msg, msg); @@ -748,7 +748,7 @@ HttpResponse process_check_instance(RecyclerServiceImpl* service, brpc::Controll return http_json_reply(MetaServiceCode::INVALID_ARGUMENT, "checker not enabled"); } MetaServiceCode code = MetaServiceCode::OK; - std::string msg; + std::string msg = "OK"; service->check_instance(*instance_id, code, msg); return http_text_reply(code, msg, msg); } @@ -776,7 +776,7 @@ HttpResponse process_check_meta(RecyclerServiceImpl* service, brpc::Controller* !password || !user || user->empty()) { return http_json_reply(MetaServiceCode::INVALID_ARGUMENT, "missing required parameters"); } - std::string msg; + std::string msg = "OK"; check_meta(service->txn_kv(), *instance_id, *host, *port, *user, *password, msg); return http_text_reply(MetaServiceCode::OK, msg, msg); } diff --git a/cloud/src/meta-service/meta_service_http.cpp b/cloud/src/meta-service/meta_service_http.cpp index 44dfde3a1954f2..8db770c5b171cf 100644 --- a/cloud/src/meta-service/meta_service_http.cpp +++ b/cloud/src/meta-service/meta_service_http.cpp @@ -106,15 +106,19 @@ std::tuple convert_ms_code_to_http_code(MetaServiceCode r HttpResponse http_json_reply(MetaServiceCode code, const std::string& msg, std::optional body) { auto [status_code, status_msg] = convert_ms_code_to_http_code(code); + std::string_view response_msg = + code == MetaServiceCode::OK && msg.empty() ? status_msg : std::string_view(msg); rapidjson::Document d; d.SetObject(); if (code == MetaServiceCode::OK) { d.AddMember("code", "OK", d.GetAllocator()); - d.AddMember("msg", rapidjson::StringRef(msg.data(), msg.size()), d.GetAllocator()); + d.AddMember("msg", rapidjson::StringRef(response_msg.data(), response_msg.size()), + d.GetAllocator()); } else { d.AddMember("code", rapidjson::StringRef(status_msg.data(), status_msg.size()), d.GetAllocator()); - d.AddMember("msg", rapidjson::StringRef(msg.data(), msg.size()), d.GetAllocator()); + d.AddMember("msg", rapidjson::StringRef(response_msg.data(), response_msg.size()), + d.GetAllocator()); } rapidjson::Document result; @@ -134,7 +138,7 @@ HttpResponse http_json_reply(MetaServiceCode code, const std::string& msg, rapidjson::StringBuffer sb; rapidjson::PrettyWriter writer(sb); d.Accept(writer); - return {status_code, msg, sb.GetString()}; + return {.status_code = status_code, .msg = std::string(response_msg), .body = sb.GetString()}; } static std::string format_http_request(brpc::Controller* cntl) { diff --git a/cloud/src/meta-service/meta_service_http.h b/cloud/src/meta-service/meta_service_http.h index 8e0c9df6cc1f9c..3c9894839232e3 100644 --- a/cloud/src/meta-service/meta_service_http.h +++ b/cloud/src/meta-service/meta_service_http.h @@ -70,8 +70,10 @@ inline static HttpResponse http_json_reply_message(const MetaServiceResponseStat inline static HttpResponse http_text_reply(MetaServiceCode code, const std::string& msg, const std::string& body) { - auto [status_code, _] = convert_ms_code_to_http_code(code); - return {status_code, msg, body}; + auto [status_code, status_msg] = convert_ms_code_to_http_code(code); + std::string response_msg = + code == MetaServiceCode::OK && msg.empty() ? std::string(status_msg) : msg; + return {.status_code = status_code, .msg = std::move(response_msg), .body = body}; } inline static HttpResponse http_text_reply(const MetaServiceResponseStatus& status, diff --git a/cloud/test/meta_service_http_test.cpp b/cloud/test/meta_service_http_test.cpp index 37cf0ddd421aec..7452fed53ec417 100644 --- a/cloud/test/meta_service_http_test.cpp +++ b/cloud/test/meta_service_http_test.cpp @@ -867,7 +867,7 @@ TEST(MetaServiceHttpTest, AlterClusterTest) { auto [status_code, resp] = ctx.forward("add_cluster", req); ASSERT_EQ(status_code, 200); ASSERT_EQ(resp.code(), MetaServiceCode::OK); - ASSERT_EQ(resp.msg(), ""); + ASSERT_EQ(resp.msg(), "OK"); } // case: request has invalid argument @@ -2848,7 +2848,7 @@ TEST(MetaServiceHttpTest, VirtualClusterTest) { node->set_edit_log_port(9990); node->set_node_type(NodeInfoPB::FE_MASTER); ret = ctx.forward("add_cluster", req_before_fe); - ASSERT_EQ(std::get<1>(ret).msg(), ""); + ASSERT_EQ(std::get<1>(ret).msg(), "OK"); ASSERT_EQ(std::get<0>(ret), 200); ASSERT_EQ(std::get<1>(ret).code(), MetaServiceCode::OK); @@ -2859,7 +2859,7 @@ TEST(MetaServiceHttpTest, VirtualClusterTest) { policy.add_standby_cluster_names(mock_exist_cluster_name1); ret = add_cluster(ctx, mock_vcg_name1, mock_vcg_id1, ClusterPB::VIRTUAL, {mock_exist_cluster_name1, mock_exist_cluster_name2}, &policy); - ASSERT_EQ(std::get<1>(ret).msg(), ""); + ASSERT_EQ(std::get<1>(ret).msg(), "OK"); ASSERT_EQ(std::get<0>(ret), 200); ASSERT_EQ(std::get<1>(ret).code(), MetaServiceCode::OK);