You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zg...@apache.org on 2017/11/25 11:39:01 UTC

hbase git commit: HBASE-19337 AsyncMetaTableAccessor may hang when call ScanController.terminate many times

Repository: hbase
Updated Branches:
  refs/heads/master 73e3af00e -> f521000d7


HBASE-19337 AsyncMetaTableAccessor may hang when call ScanController.terminate many times


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/f521000d
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/f521000d
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/f521000d

Branch: refs/heads/master
Commit: f521000d7883e83943b948989f05bfe49d78f5db
Parents: 73e3af0
Author: Guanghao Zhang <zg...@apache.org>
Authored: Thu Nov 23 17:30:02 2017 +0800
Committer: Guanghao Zhang <zg...@apache.org>
Committed: Sat Nov 25 19:29:08 2017 +0800

----------------------------------------------------------------------
 .../hadoop/hbase/AsyncMetaTableAccessor.java     | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/f521000d/hbase-client/src/main/java/org/apache/hadoop/hbase/AsyncMetaTableAccessor.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/AsyncMetaTableAccessor.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/AsyncMetaTableAccessor.java
index 4c1d602..d2af955 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/AsyncMetaTableAccessor.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/AsyncMetaTableAccessor.java
@@ -303,8 +303,8 @@ public class AsyncMetaTableAccessor {
     startRow.ifPresent(scan::withStartRow);
     stopRow.ifPresent(scan::withStopRow);
 
-    if (LOG.isTraceEnabled()) {
-      LOG.trace("Scanning META" + " starting at row=" + Bytes.toStringBinary(scan.getStartRow())
+    if (LOG.isDebugEnabled()) {
+      LOG.debug("Scanning META" + " starting at row=" + Bytes.toStringBinary(scan.getStartRow())
           + " stopping at row=" + Bytes.toStringBinary(scan.getStopRow()) + " for max="
           + rowUpperLimit + " with caching=" + scan.getCaching());
     }
@@ -346,19 +346,26 @@ public class AsyncMetaTableAccessor {
 
     @Override
     public void onNext(Result[] results, ScanController controller) {
+      boolean terminateScan = false;
       for (Result result : results) {
         try {
           if (!visitor.visit(result)) {
-            controller.terminate();
+            terminateScan = true;
+            break;
           }
-        } catch (IOException e) {
+        } catch (Exception e) {
           future.completeExceptionally(e);
-          controller.terminate();
+          terminateScan = true;
+          break;
         }
         if (++currentRowCount >= rowUpperLimit) {
-          controller.terminate();
+          terminateScan = true;
+          break;
         }
       }
+      if (terminateScan) {
+        controller.terminate();
+      }
     }
   }