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

Reid Chan commented on HBASE-18837:
-----------------------------------

{code}
if (!succ) {
                if (!resubmitFailedPut(ps, oldLoc)) {
                        
FlushWorker.this.getTotalFailedPutCount().incrementAndGet();
                }
        }
{code}
It potentially leads to a recursive call on {{resubmitFailedPut(ps, oldLoc)}} 
methods, as long as this put gets failed caused by some unexpected situations, 
resulting in StackOverFlow or OutOfMemory exception whichever comes first.

> HTableMultiplexer behavior during regions split
> -----------------------------------------------
>
>                 Key: HBASE-18837
>                 URL: https://issues.apache.org/jira/browse/HBASE-18837
>             Project: HBase
>          Issue Type: Improvement
>          Components: Client
>    Affects Versions: 1.1.2
>            Reporter: chausson
>            Priority: Minor
>
> HTableMultiplexer class mentions following in the javadoc : "If any queue is 
> full, the HTableMultiplexer starts to drop the Put requests for that 
> particular queue."
> This could be improved by replacing following code in 
> HTableMultiplexer.resubmitFailedPut() method :
> {code:title=HTableMultiplexer}
> try {
>       succ = FlushWorker.this.getMultiplexer().put(tableName, failedPut, 
> retryCount);
> } finally {
>       FlushWorker.this.getRetryInQueue().decrementAndGet();
>       if (!succ) {
>               FlushWorker.this.getTotalFailedPutCount().incrementAndGet();
>       }
> }
> {code}
> With : 
> {code}
> try {
>       succ = FlushWorker.this.getMultiplexer().put(tableName, failedPut, 
> retryCount);
>       if (!succ) {
>               if (!resubmitFailedPut(ps, oldLoc)) {
>                       
> FlushWorker.this.getTotalFailedPutCount().incrementAndGet();
>               }
>       }
> } finally {
>       FlushWorker.this.getRetryInQueue().decrementAndGet();
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to