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

Sergey Smirnov commented on HBASE-13022:
----------------------------------------

I am not sure what was exact intention of setting it to 0 - probably have 0 
pause between DML attempts to fail fast. So it is fine in case of get 
operation: we tried once, did not succeed, immediately tried second time and 
fail if there is no success again.

For DDL operations (disable, create, etc) it is a different story. Because most 
of these operations happen asynchronously there is some additional logic to 
wait longer until executing thread finishes. e.g. in case of disableTable 
(HbaseAdmin.disableTable(...)) waiting loop is defined as:
for (int tries = 0; tries < (this.numRetries * this.retryLongerMultiplier); 
tries++)
where is retryLongerMultiplier = hbase.client.retries.longer.multiplier and is 
10 by default
And in each iteration of this waiting loop we try to gradually increase waiting 
time: getPauseTime(tries)
Even if hbase.client.pause=1 it works perfectly but 0 brakes it because 
getPauseTime(tries) always return 0 and this waiting loop is broken - we exit 
almost immediately
So in my opinion it should either be fixed for DDL case or at least mentioned 
explicitly in documentation warning users that setting it to 0 will cause 
exceptions fore some of the DDL operations 

> "RegionException: Retries exhausted..." ERROR in HBaseAdmin.disableTable(...) 
> if hbase.client.pause=0
> -----------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-13022
>                 URL: https://issues.apache.org/jira/browse/HBASE-13022
>             Project: HBase
>          Issue Type: Bug
>          Components: Admin
>            Reporter: Sergey Smirnov
>         Attachments: HBASE-13022__RegionException__Retries_exhausted.patch
>
>
> If hbase.client.pause set to 0 it breaks retry back-off logic in 
> HbaseAdmin.getPauseTime() for DDL operations. Operation succeeds because it 
> happens asynchronously but caller get an Exception because caller thread did 
> not wait for operation to complete:
> ...
> Caused by: org.apache.hadoop.hbase.RegionException: Retries exhausted, it 
> took too long to wait for the table FOO to be disabled.
>       at 
> org.apache.hadoop.hbase.client.HBaseAdmin.disableTable(HBaseAdmin.java:997)
>       at 
> org.apache.hadoop.hbase.client.HBaseAdmin.disableTable(HBaseAdmin.java:1005)
> ...



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to