[ 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)