Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-9167

ServerCallable retries just once if timeout is not integer.max

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.94.10
    • 0.94.12
    • Client
    • None
    • Reviewed

    Description

      If callTimeout is not integer.max and throwable is not SocketTimeoutException, we set the callTimeout to a negative value since endTime is not set yet. Therefore, the next call will always throw SocketTimeoutException.

          if (this.callTimeout != HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT)
            if (throwable instanceof SocketTimeoutException
                || (this.endTime - this.startTime > this.callTimeout)) {
              throw (SocketTimeoutException) (SocketTimeoutException) new SocketTimeoutException(
                  "Call to access row '" + Bytes.toString(row) + "' on table '"
                      + Bytes.toString(tableName)
                      + "' failed on socket timeout exception: " + throwable)
                  .initCause(throwable);
            } else {
         ===>     this.callTimeout = ((int) (this.endTime - this.startTime));
            }
      

      Attachments

        1. 0.94-9167_v2.patch
          6 kB
          Jimmy Xiang
        2. 0.94-9167.patch
          6 kB
          Jimmy Xiang

        Activity

          People

            jxiang Jimmy Xiang
            jxiang Jimmy Xiang
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: