[ https://issues.apache.org/jira/browse/HBASE-7756?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
nkeywal updated HBASE-7756: --------------------------- Status: Patch Available (was: Open) > Strange code in ServerCallable#shouldRetry > ------------------------------------------ > > Key: HBASE-7756 > URL: https://issues.apache.org/jira/browse/HBASE-7756 > Project: HBase > Issue Type: Bug > Components: Client > Affects Versions: 0.94.4, 0.96.0 > Reporter: nkeywal > Assignee: nkeywal > Attachments: 7756.v1.patch, 7756.v2.patch > > > This code is strange. > If you configure a different value for HBASE_CLIENT_OPERATION_TIMEOUT, you > can have only one socket timeout (whatever your setting for the socket > timeout). If not, the first time we will retry (again, whatever your setting > and the real timeout). > {code} > public void shouldRetry(Throwable throwable) throws IOException { > if (this.callTimeout != HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT) > if (throwable instanceof SocketTimeoutException > || (this.endTime - this.startTime > this.callTimeout)) { > throw (SocketTimeoutException) new SocketTimeoutException( > "Call to access row '" + Bytes.toString(row) + "' on table '" > + Bytes.toString(tableName) > + "' failed on socket timeout exception: " + throwable + " > this.callTimeout="+this.callTimeout + " time= "+(this.endTime - > this.startTime)) > .initCause(throwable); > } else { > this.callTimeout = ((int) (this.endTime - this.startTime)); > } > } > {code} > I don't get all the implications yet, but for sure it's too smart to be good, > and, at least, breaks my tests for HBASE-7590 -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira