in src/hbase/client/async-client-scanner.cc [68:101]
void AsyncClientScanner::OpenScanner() {
auto self(shared_from_this());
open_scanner_tries_ = 1;
auto caller = conn_->caller_factory()
->Single<std::shared_ptr<OpenScannerResponse>>()
->table(table_name_)
->row(scan_->StartRow())
->locate_type(GetLocateType(*scan_))
->rpc_timeout(rpc_timeout_nanos_)
->operation_timeout(scan_timeout_nanos_)
->pause(pause_)
->max_retries(max_retries_)
->start_log_errors_count(start_log_errors_count_)
->action([&](std::shared_ptr<hbase::HBaseRpcController> controller,
std::shared_ptr<hbase::RegionLocation> loc,
std::shared_ptr<hbase::RpcClient> rpc_client)
-> folly::Future<std::shared_ptr<OpenScannerResponse>> {
return CallOpenScanner(rpc_client, controller, loc);
})
->Build();
caller->Call()
.then([this, self](std::shared_ptr<OpenScannerResponse> resp) {
VLOG(3) << "Opened scanner with id:" << resp->scan_resp_->scanner_id()
<< ", region:" << resp->region_location_->DebugString() << ", starting scan";
StartScan(resp);
})
.onError([this, self](const folly::exception_wrapper& e) {
VLOG(3) << "Open scan request received error:" << e.what();
consumer_->OnError(e);
})
.then([caller, self](const auto r) { return r; });
}