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

[email protected] commented on HBASE-2937:
------------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/755/#review683
-----------------------------------------------------------


This seems like a bunch of functionality for a relatively small change.  Nice 
one Karthick.  A few questions in the below.


src/main/java/org/apache/hadoop/hbase/HConstants.java
<https://reviews.apache.org/r/755/#comment1366>

    Be careful about adding white space (no biggie)



src/main/java/org/apache/hadoop/hbase/client/HTable.java
<https://reviews.apache.org/r/755/#comment1367>

    What if table is -ROOT-?



src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java
<https://reviews.apache.org/r/755/#comment1368>

    Should this use the constant you added above? The deafault timeout?



src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java
<https://reviews.apache.org/r/755/#comment1369>

    White space



src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java
<https://reviews.apache.org/r/755/#comment1370>

    White space



src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java
<https://reviews.apache.org/r/755/#comment1371>

    white space
    



src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java
<https://reviews.apache.org/r/755/#comment1372>

    Will this work?  What happens if lots of concurrent threads going against 
lots of different tables each with a different timeout?  Will a meta table call 
pick up a short timeout that was put in place by a near-concurrent edit?



src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java
<https://reviews.apache.org/r/755/#comment1373>

    Are there other exceptions you think we should rethrow?  Connection 
Exception?


- Michael


On 2011-05-18 23:56:26, Karthick Sankarachary wrote:
bq.  
bq.  -----------------------------------------------------------
bq.  This is an automatically generated e-mail. To reply, visit:
bq.  https://reviews.apache.org/r/755/
bq.  -----------------------------------------------------------
bq.  
bq.  (Updated 2011-05-18 23:56:26)
bq.  
bq.  
bq.  Review request for hbase.
bq.  
bq.  
bq.  Summary
bq.  -------
bq.  
bq.  Thanks to HBASE-3154, users now have the ability to specify a timeout for 
client-side RPC calls. However, it doesn't go far enough in terms of how low 
that timeout can go. Set the RPC timeout to too low a value and you run the 
risk of timing out on calls to the meta tables, which are preconditions to 
calling the {{HRegionInterface}} proxy.
bq.  
bq.  Given that, I believe the motivation at work in HBASE-2937 still hold 
true. In this patch, I add a operation-level timeout, configurable through 
"hbase.client.operation.timeout", which will override the value specified by 
"hbase.rpc.timeout", if any, within the scope of the {{ServerCallable#call}} 
method. In other words, the operation-level timeout does not apply to calls to 
the meta tables. 
bq.  
bq.  Furthermore, the patch treats an RPC timeout as a non-fatal event, in that 
it will not cause the {{HBaseClient#Connection}} instance to be closed. Last 
but not the least, users will also have the ability to set the operation 
timeout on the {{HTable}} on the fly.
bq.  
bq.  
bq.  This addresses bug HBASE-2937.
bq.      https://issues.apache.org/jira/browse/HBASE-2937
bq.  
bq.  
bq.  Diffs
bq.  -----
bq.  
bq.    src/main/java/org/apache/hadoop/hbase/HConstants.java e9e3694 
bq.    src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java 
b26f41e 
bq.    src/main/java/org/apache/hadoop/hbase/client/HTable.java 61e151a 
bq.    src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java 6f22123 
bq.    src/main/java/org/apache/hadoop/hbase/ipc/HBaseClient.java 470e741 
bq.    src/main/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java dbb57d9 
bq.    src/main/java/org/apache/hadoop/hbase/util/PoolMap.java 354d49a 
bq.  
bq.  Diff: https://reviews.apache.org/r/755/diff
bq.  
bq.  
bq.  Testing
bq.  -------
bq.  
bq.  mvn test
bq.  
bq.  
bq.  Thanks,
bq.  
bq.  Karthick
bq.  
bq.



> Facilitate Timeouts In HBase Client
> -----------------------------------
>
>                 Key: HBASE-2937
>                 URL: https://issues.apache.org/jira/browse/HBASE-2937
>             Project: HBase
>          Issue Type: New Feature
>          Components: client
>    Affects Versions: 0.89.20100621
>            Reporter: Karthick Sankarachary
>            Assignee: Karthick Sankarachary
>            Priority: Critical
>             Fix For: 0.92.0
>
>         Attachments: HBASE-2937.patch, HBASE-2937.patch
>
>
> Currently, there is no way to force an operation on the HBase client (viz. 
> HTable) to time out if a certain amount of time has elapsed.  In other words, 
> all invocations on the HTable class are veritable blocking calls, which will 
> not return until a response (successful or otherwise) is received. 
> In general, there are two ways to handle timeouts:  (a) call the operation in 
> a separate thread, until it returns a response or the wait on the thread 
> times out and (b) have the underlying socket unblock the operation if the 
> read times out.  The downside of the former approach is that it consumes more 
> resources in terms of threads and callables. 
> Here, we describe a way to specify and handle timeouts on the HTable client, 
> which relies on the latter approach (i.e., socket timeouts). Right now, the 
> HBaseClient sets the socket timeout to the value of the "ipc.ping.interval" 
> parameter, which is also how long it waits before pinging the server in case 
> of a failure. The goal is to allow clients to set that timeout on the fly 
> through HTable. Rather than adding an optional timeout argument to every 
> HTable operation, we chose to make it a property of HTable which effectively 
> applies to every method that involves a remote operation.
> In order to propagate the timeout  from HTable to HBaseClient, we replaced 
> all occurrences of ServerCallable in HTable with an extension called 
> ClientCallable, which sets the timeout on the region server interface, once 
> it has been instantiated, through the HConnection object. The latter, in 
> turn, asks HBaseRPC to pass that timeout to the corresponding Invoker, so 
> that it may inject the timeout at the time the invocation is made on the 
> region server proxy. Right before the request is sent to the server, we set 
> the timeout specified by the client on the underlying socket.
> In conclusion, this patch will afford clients the option of performing an 
> HBase operation until it completes or a specified timeout elapses. Note that 
> a timeout of zero is interpreted as an infinite timeout.

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

Reply via email to