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

kevin su edited comment on HBASE-18837 at 1/20/19 4:54 PM:
-----------------------------------------------------------

{{ScheduledExecutorService executor won't not retry to put, if we don't catch 
the Exception.}}

reference by 
[https://stackoverflow.com/questions/6894595/scheduledexecutorservice-exception-handling]

{{It will stuck by exception.}}

{{Hope this patch help, btw, could i have opportunity to be assigned this 
issue.}}

{{I will try my best to solved it.}}

 

>From dbeb493b103ea874ce8f65fe084692dc5de53bc0 Mon Sep 17 00:00:00 2001
 From: Kevin <[email protected]>
 Date: Mon, 21 Jan 2019 00:23:56 +0800
 Subject: [PATCH] HBASE-18837 Handle re-try the put exception

—
 .../main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java
 index e6b061e45f..32f5b03423 100644
 — 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java
 +++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java
 @@ -513,8 +513,10 @@ public class HTableMultiplexer {
 boolean succ = false;
 try

{ succ = FlushWorker.this.getMultiplexer().put(tableName, failedPut, 
retryCount); - }

finally

{ - FlushWorker.this.getRetryInQueue().decrementAndGet(); + }

catch (Throwable t)

{ + LOG.debug("Exception by re-trying the Put"); + }

finally {
 + FlushWorker.this.getRetryInQueue().decrementAndGet();
 if (!succ)

{ FlushWorker.this.getTotalFailedPutCount().incrementAndGet(); }

– 
 2.16.2.windows.1

 

 

 


was (Author: pingsutw):
{{ScheduledExecutorService executor won't not retry to put, if we don't catch 
the Exception.}}

{{It will stuck by exception.}}

{{Hope this patch help, btw, could i have opportunity to be assigned this 
issue.}}

{{I will try my best to solved it.}}

 

>From dbeb493b103ea874ce8f65fe084692dc5de53bc0 Mon Sep 17 00:00:00 2001
From: Kevin <[email protected]>
Date: Mon, 21 Jan 2019 00:23:56 +0800
Subject: [PATCH] HBASE-18837 Handle re-try the put exception

---
 .../main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java
index e6b061e45f..32f5b03423 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTableMultiplexer.java
@@ -513,8 +513,10 @@ public class HTableMultiplexer {
 boolean succ = false;
 try {
 succ = FlushWorker.this.getMultiplexer().put(tableName, failedPut, retryCount);
- } finally {
- FlushWorker.this.getRetryInQueue().decrementAndGet();
+ } catch (Throwable t) {
+ LOG.debug("Exception by re-trying the Put");
+ } finally {
+ FlushWorker.this.getRetryInQueue().decrementAndGet();
 if (!succ) {
 FlushWorker.this.getTotalFailedPutCount().incrementAndGet();
 }
-- 
2.16.2.windows.1

 

 

 

> 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
(v7.6.3#76005)

Reply via email to