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)); }