| 1348 | } |
| 1349 | |
| 1350 | void Coordinator::HandleFailedExecRpcs(vector<BackendState*> failed_backend_states) { |
| 1351 | DCHECK(!failed_backend_states.empty()); |
| 1352 | |
| 1353 | // Create an error based on the Exec RPC failure Status |
| 1354 | vector<string> backend_addresses; |
| 1355 | backend_addresses.reserve(failed_backend_states.size()); |
| 1356 | for (BackendState* backend_state : failed_backend_states) { |
| 1357 | backend_addresses.push_back( |
| 1358 | NetworkAddressPBToString(backend_state->krpc_impalad_address())); |
| 1359 | } |
| 1360 | Status retryable_status = Status::Expected( |
| 1361 | Substitute("ExecFInstances RPC to $0 failed", join(backend_addresses, ","))); |
| 1362 | for (BackendState* backend_state : failed_backend_states) { |
| 1363 | retryable_status.MergeStatus( |
| 1364 | FromKuduStatus(backend_state->exec_rpc_status(), "Exec() rpc failed")); |
| 1365 | } |
| 1366 | |
| 1367 | // Retry the query |
| 1368 | parent_query_driver_->TryQueryRetry(parent_request_state_, &retryable_status); |
| 1369 | } |
| 1370 | |
| 1371 | int64_t Coordinator::GetMaxBackendStateLagMs(NetworkAddressPB* address) { |
| 1372 | DCHECK(exec_rpcs_complete_.Load()) << "Exec() must be called first."; |
nothing calls this directly
no test coverage detected