This is an automated email from the ASF dual-hosted git repository. panxiaolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new af4de930c63 [Bug](http-api) fix core dump on /api/reset_rpc_channel coz exec_env not initialized (#38375) af4de930c63 is described below commit af4de930c63aa5fd9b6921ccb532c35e894614db Author: Pxl <pxl...@qq.com> AuthorDate: Tue Jul 30 14:09:04 2024 +0800 [Bug](http-api) fix core dump on /api/reset_rpc_channel coz exec_env not initialized (#38375) ## Proposed changes fix core dump on /api/reset_rpc_channel coz exec_env not initialized ```cpp *** Query id: 0-0 *** *** is nereids: 0 *** *** tablet id: 0 *** *** Aborted at 1722235709 (unix time) try "date -d @1722235709" if you are using GNU date *** *** Current BE git commitID: 60eea39cd6 *** *** SIGSEGV unknown detail explain (@0x0) received by PID 3829988 (TID 3835435 OR 0x7f9a7242e700) from PID 0; stack trace: *** 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /mnt/disk1/xiaolei/incubator-doris/be/src/common/signal_handler.h:421 1# 0x00007FA57984DB50 in /lib64/libc.so.6 2# doris::ExecEnv::brpc_internal_client_cache() const at /mnt/disk1/xiaolei/incubator-doris/be/src/runtime/exec_env.h:212 3# doris::ResetRPCChannelAction::handle(doris::HttpRequest*) at /mnt/disk1/xiaolei/incubator-doris/be/src/http/action/reset_rpc_channel_action.cpp:41 4# doris::on_request(evhttp_request*, void*) at /mnt/disk1/xiaolei/incubator-doris/be/src/http/ev_http_server.cpp:69 5# 0x0000558B9818EBD7 in /mnt/disk1/xiaolei/incubator-doris/output/be/lib/doris_be 6# bufferevent_run_readcb_ in /mnt/disk1/xiaolei/incubator-doris/output/be/lib/doris_be 7# 0x0000558B98190C9B in /mnt/disk1/xiaolei/incubator-doris/output/be/lib/doris_be 8# 0x0000558B9817801A in /mnt/disk1/xiaolei/incubator-doris/output/be/lib/doris_be 9# 0x0000558B9817867F in /mnt/disk1/xiaolei/incubator-doris/output/be/lib/doris_be 10# 0x0000558B9817AE30 in /mnt/disk1/xiaolei/incubator-doris/output/be/lib/doris_be 11# doris::EvHttpServer::start()::$_0::operator()() const at /mnt/disk1/xiaolei/incubator-doris/be/src/http/ev_http_server.cpp:139 12# void std::__invoke_impl<void, doris::EvHttpServer::start()::$_0&>(std::__invoke_other, doris::EvHttpServer::start()::$_0&) at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61 13# std::enable_if<is_invocable_r_v<void, doris::EvHttpServer::start()::$_0&>, void>::type std::__invoke_r<void, doris::EvHttpServer::start()::$_0&>(doris::EvHttpServer::start()::$_0&) at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:117 14# std::_Function_handler<void (), doris::EvHttpServer::start()::$_0>::_M_invoke(std::_Any_data const&) at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:290 15# std::function<void ()>::operator()() const at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:591 16# doris::FunctionRunnable::run() at /mnt/disk1/xiaolei/incubator-doris/be/src/util/threadpool.cpp:48 17# doris::ThreadPool::dispatch_thread() at /mnt/disk1/xiaolei/incubator-doris/be/src/util/threadpool.cpp:543 18# void std::__invoke_impl<void, void (doris::ThreadPool::*&)(), doris::ThreadPool*&>(std::__invoke_memfun_deref, void (doris::ThreadPool::*&)(), doris::ThreadPool*&) at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:74 19# std::__invoke_result<void (doris::ThreadPool::*&)(), doris::ThreadPool*&>::type std::__invoke<void (doris::ThreadPool::*&)(), doris::ThreadPool*&>(void (doris::ThreadPool::*&)(), doris::ThreadPool*&) at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96 20# void std::_Bind<void (doris::ThreadPool::*(doris::ThreadPool*))()>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/functional:506 21# void std::_Bind<void (doris::ThreadPool::*(doris::ThreadPool*))()>::operator()<, void>() at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/functional:591 22# void std::__invoke_impl<void, std::_Bind<void (doris::ThreadPool::*(doris::ThreadPool*))()>&>(std::__invoke_other, std::_Bind<void (doris::ThreadPool::*(doris::ThreadPool*))()>&) at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61 23# std::enable_if<is_invocable_r_v<void, std::_Bind<void (doris::ThreadPool::*(doris::ThreadPool*))()>&>, void>::type std::__invoke_r<void, std::_Bind<void (doris::ThreadPool::*(doris::ThreadPool*))()>&>(std::_Bind<void (doris::ThreadPool::*(doris::ThreadPool*))()>&) at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:117 24# std::_Function_handler<void (), std::_Bind<void (doris::ThreadPool::*(doris::ThreadPool*))()> >::_M_invoke(std::_Any_data const&) at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:290 25# std::function<void ()>::operator()() const at /mnt/disk1/xiaolei/ldb_17/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:591 26# doris::Thread::supervise_thread(void*) at /mnt/disk1/xiaolei/incubator-doris/be/src/util/thread.cpp:498 27# asan_thread_start(void*) in /mnt/disk1/xiaolei/incubator-doris/output/be/lib/doris_be 28# start_thread in /lib64/libpthread.so.0 29# __clone in /lib64/libc.so.6 ``` --- be/src/http/action/reset_rpc_channel_action.cpp | 2 +- .../reset_rpc_channel/reset_rpc_channel.groovy | 27 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/be/src/http/action/reset_rpc_channel_action.cpp b/be/src/http/action/reset_rpc_channel_action.cpp index e1b180a61d4..b14c0f65e7f 100644 --- a/be/src/http/action/reset_rpc_channel_action.cpp +++ b/be/src/http/action/reset_rpc_channel_action.cpp @@ -34,7 +34,7 @@ namespace doris { ResetRPCChannelAction::ResetRPCChannelAction(ExecEnv* exec_env, TPrivilegeHier::type hier, TPrivilegeType::type type) - : HttpHandlerWithAuth(exec_env, hier, type) {} + : HttpHandlerWithAuth(exec_env, hier, type), _exec_env(exec_env) {} void ResetRPCChannelAction::handle(HttpRequest* req) { std::string endpoints = req->param("endpoints"); if (iequal(endpoints, "all")) { diff --git a/regression-test/suites/http_p0/reset_rpc_channel/reset_rpc_channel.groovy b/regression-test/suites/http_p0/reset_rpc_channel/reset_rpc_channel.groovy new file mode 100644 index 00000000000..e89289f72fd --- /dev/null +++ b/regression-test/suites/http_p0/reset_rpc_channel/reset_rpc_channel.groovy @@ -0,0 +1,27 @@ + +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite('reset_rpc_channel') { + def backendId_to_backendIP = [:] + def backendId_to_backendHttpPort = [:] + getBackendIpHttpPort(backendId_to_backendIP, backendId_to_backendHttpPort); + for (int i=0;i<backendId_to_backendIP.size();i++){ + def beHttpAddress =backendId_to_backendIP.entrySet()[i].getValue()+":"+backendId_to_backendHttpPort.entrySet()[i].getValue() + curl("POST",beHttpAddress+"/api/reset_rpc_channel/all") + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org