This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch branch-3.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push: new 5db6952b1d8 branch-3.0: [fix](auth)fix be enable http auth, some request link never return. #44959 (#44980) 5db6952b1d8 is described below commit 5db6952b1d80253a796f34026ccfc0f08129e489 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> AuthorDate: Thu Dec 5 10:16:17 2024 +0800 branch-3.0: [fix](auth)fix be enable http auth, some request link never return. #44959 (#44980) Cherry-picked from #44959 Co-authored-by: daidai <changyu...@selectdb.com> --- be/src/http/http_handler_with_auth.cpp | 11 +++++++++++ be/test/http/http_client_test.cpp | 8 ++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/be/src/http/http_handler_with_auth.cpp b/be/src/http/http_handler_with_auth.cpp index 518b9868de1..ae5c024e76d 100644 --- a/be/src/http/http_handler_with_auth.cpp +++ b/be/src/http/http_handler_with_auth.cpp @@ -35,6 +35,7 @@ HttpHandlerWithAuth::HttpHandlerWithAuth(ExecEnv* exec_env, TPrivilegeHier::type : _exec_env(exec_env), _hier(hier), _type(type) {} int HttpHandlerWithAuth::on_header(HttpRequest* req) { + //if u return value isn't 0,u should `send_reply`,Avoid requesting links that never return. TCheckAuthRequest auth_request; TCheckAuthResult auth_result; AuthInfo auth_info; @@ -83,6 +84,11 @@ int HttpHandlerWithAuth::on_header(HttpRequest* req) { #ifndef BE_TEST TNetworkAddress master_addr = _exec_env->cluster_info()->master_fe_addr; + if (master_addr.hostname.empty() || master_addr.port == 0) { + LOG(WARNING) << "Not found master fe, Can't auth API request: " << req->debug_string(); + HttpChannel::send_error(req, HttpStatus::SERVICE_UNAVAILABLE); + return -1; + } { auto status = ThriftRpcHelper::rpc<FrontendServiceClient>( master_addr.hostname, master_addr.port, @@ -90,6 +96,10 @@ int HttpHandlerWithAuth::on_header(HttpRequest* req) { client->checkAuth(auth_result, auth_request); }); if (!status) { + LOG(WARNING) << "CheckAuth Rpc Fail.Fe Ip:" << master_addr.hostname + << ", Fe port:" << master_addr.port << ".Status:" << status.to_string() + << ".Request: " << req->debug_string(); + HttpChannel::send_error(req, HttpStatus::SERVICE_UNAVAILABLE); return -1; } } @@ -98,6 +108,7 @@ int HttpHandlerWithAuth::on_header(HttpRequest* req) { auth_result.status.status_code = TStatusCode::type::OK; auth_result.status.error_msgs.clear(); } else { + HttpChannel::send_reply(req, HttpStatus::FORBIDDEN); return -1; } #endif diff --git a/be/test/http/http_client_test.cpp b/be/test/http/http_client_test.cpp index d42e0a6775e..c98328d7c8e 100644 --- a/be/test/http/http_client_test.cpp +++ b/be/test/http/http_client_test.cpp @@ -413,7 +413,7 @@ TEST_F(HttpClientTest, enable_http_auth) { EXPECT_TRUE(!st.ok()); std::cout << "response = " << response << "\n"; std::cout << "st.msg() = " << st.msg() << "\n"; - EXPECT_TRUE(st.msg().find("Operation timed out after") != std::string::npos); + EXPECT_TRUE(st.msg().find("403") != std::string::npos); } { @@ -474,7 +474,7 @@ TEST_F(HttpClientTest, enable_http_auth) { EXPECT_TRUE(!st.ok()); std::cout << "response = " << response << "\n"; std::cout << "st.msg() = " << st.msg() << "\n"; - EXPECT_TRUE(st.msg().find("Operation timed out after") != std::string::npos); + EXPECT_TRUE(st.msg().find("403") != std::string::npos); } // valid token @@ -521,7 +521,7 @@ TEST_F(HttpClientTest, enable_http_auth) { EXPECT_TRUE(!st.ok()); std::cout << "response = " << response << "\n"; std::cout << "st.msg() = " << st.msg() << "\n"; - EXPECT_TRUE(st.msg().find("Operation timed out after") != std::string::npos); + EXPECT_TRUE(st.msg().find("403") != std::string::npos); } std::vector<std::string> check_get_list = {"/api/clear_cache/aa", @@ -566,7 +566,7 @@ TEST_F(HttpClientTest, enable_http_auth) { EXPECT_TRUE(!st.ok()); std::cout << "response = " << response << "\n"; std::cout << "st.msg() = " << st.msg() << "\n"; - EXPECT_TRUE(st.msg().find("Operation timed out after") != std::string::npos); + EXPECT_TRUE(st.msg().find("403") != std::string::npos); } } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org