[ 
https://issues.apache.org/jira/browse/HBASE-4003?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13073081#comment-13073081
 ] 

Karthick Sankarachary commented on HBASE-4003:
----------------------------------------------

Please review the second version of the patch, which passes most of the tests, 
including the one that led to the revert of the initial version. The list of 
failed test cases is shown below, which I'm currently looking into:

# org.apache.hadoop.hbase.master.TestDistributedLogSplitting
# org.apache.hadoop.hbase.regionserver.TestSplitLogWorker
# org.apache.hadoop.hbase.TestFullLogReconstruction
# org.apache.hadoop.hbase.client.TestMultiParallel
# org.apache.hadoop.hbase.master.TestMasterFailover
# org.apache.hadoop.hbase.client.TestScannerTimeout

In short, the key changes in the second version are outlined below:
# Ensure that the exception bubbles up in {#cleanupCalls} if RPC timeout is 0, 
which will be the case in the even the connection is closed.
# Order the {Connection#calls} map by the call id, so that we can iterate over 
it in insertion order.
# Invoke the {#cleanupCalls} method even if the {#receiveResponse} method 
doesn't error out. In theory, even if the socket doesn't timeout, it's possible 
that some of the older calls may have timed out.
# Reset the socket timeout in {#cleanupCall} to the shortest time that any call 
is willing to wait. This is essentially the RPC timeout minus the time the 
oldest call has already spent waiting.

Please let me know if you've any questions.

> Cleanup Calls Conservatively On Timeout
> ---------------------------------------
>
>                 Key: HBASE-4003
>                 URL: https://issues.apache.org/jira/browse/HBASE-4003
>             Project: HBase
>          Issue Type: Bug
>          Components: client
>    Affects Versions: 0.90.3
>            Reporter: Karthick Sankarachary
>            Assignee: Karthick Sankarachary
>             Fix For: 0.92.0
>
>         Attachments: HBASE-4003-V2.patch, HBASE-4003.patch
>
>
> In the event of a socket timeout, the {{HBaseClient}} iterates over the 
> outstanding calls (on that socket), and notifies them that a 
> {{SocketTimeoutException}} has occurred. Ideally, we should be cleanup up 
> just those calls that have been outstanding for longer than the specified 
> socket timeout.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to