Uploaded image for project: 'IMPALA'
  1. IMPALA
  2. IMPALA-4070

ClientCache::DoRpc() doesn't always return the right error for timeouts

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: Impala 2.7.0
    • Fix Version/s: None
    • Component/s: Distributed Exec
    • Labels:
      None

      Description

      In DoRpc():

       if (IsRecvTimeoutTException(e)) {
              return Status(TErrorCode::RPC_RECV_TIMEOUT, strings::Substitute(
                  "Client $0 timed-out during recv call.", TNetworkAddressToString(address_)));
            }
            // <snip>
            const Status& status = Reopen();
            if (!status.ok()) {
              if (retry_is_safe != NULL) *retry_is_safe = true;
              return Status(TErrorCode::RPC_CLIENT_CONNECT_FAILURE, status.GetDetail());
            }
            try {
              (client_->*f)(*response, request);
            } catch (apache::thrift::TException& e) {
              // By this point the RPC really has failed.
              // TODO: Revisit this logic later. It's possible that the new connection
              // works but we hit timeout here.
              // *********** COULD BE A TIMEOUT EXCEPTION *************
              // *********** NEEDS IsRecvTimeoutTException()    *************
              return Status(TErrorCode::RPC_GENERAL_ERROR, e.what());
            }
      

      This mostly affects test code that tries to trigger a timeout and confirms that one happened.

        Attachments

          Activity

            People

            • Assignee:
              henryr Henry Robinson
              Reporter:
              henryr Henry Robinson
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: