diff --git hbase-native-client/core/async-rpc-retrying-caller.cc hbase-native-client/core/async-rpc-retrying-caller.cc index cb058b1..8e60991 100644 --- hbase-native-client/core/async-rpc-retrying-caller.cc +++ hbase-native-client/core/async-rpc-retrying-caller.cc @@ -148,9 +148,9 @@ void AsyncSingleRequestRpcRetryingCaller::OnError( * establishment time (see ConnectionFactory::Connect()), otherwise, the IOThreadPool thread * just hangs because it deadlocks itself. */ - conn_->retry_executor()->add([&]() { + conn_->retry_executor()->add([=]() { retry_timer_->scheduleTimeoutFn( - [this]() { conn_->cpu_executor()->add([&]() { LocateThenCall(); }); }, + [=]() { conn_->cpu_executor()->add([&]() { LocateThenCall(); }); }, std::chrono::milliseconds(TimeUtil::ToMillis(delay_ns))); }); } diff --git hbase-native-client/core/async-scan-rpc-retrying-caller.cc hbase-native-client/core/async-scan-rpc-retrying-caller.cc index fbdf17a..a1e8362 100644 --- hbase-native-client/core/async-scan-rpc-retrying-caller.cc +++ hbase-native-client/core/async-scan-rpc-retrying-caller.cc @@ -406,6 +406,7 @@ void AsyncScanRpcRetryingCaller::Call() { ->AsyncCall(region_location_->server_name().host_name(), region_location_->server_name().port(), std::move(req), security::User::defaultUser(), "ClientService") + .via(conn_->cpu_executor().get()) .then([self, this](const std::unique_ptr& resp) { auto scan_resp = std::static_pointer_cast(resp->resp_msg()); return OnComplete(controller_, scan_resp, resp->cell_scanner());