Repository: hbase
Updated Branches:
  refs/heads/branch-2 7c871849d -> a489292a8


HBASE-19502 Make sure we have closed all StoreFileScanner if we fail to open 
any StoreFileScanners


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

Branch: refs/heads/branch-2
Commit: a489292a832f77af4d36813a02f902ace24b1a98
Parents: 7c87184
Author: Chia-Ping Tsai <[email protected]>
Authored: Wed Dec 13 21:30:08 2017 +0800
Committer: Chia-Ping Tsai <[email protected]>
Committed: Wed Dec 13 21:38:45 2017 +0800

----------------------------------------------------------------------
 .../hbase/regionserver/StoreFileScanner.java    | 28 +++++++++++++-------
 1 file changed, 19 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/a489292a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
index 21e61b2..89b2acd 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
@@ -137,16 +137,26 @@ public class StoreFileScanner implements KeyValueScanner {
       file.initReader();
       sortedFiles.add(file);
     }
-    for (int i = 0, n = files.size(); i < n; i++) {
-      HStoreFile sf = sortedFiles.remove();
-      StoreFileScanner scanner;
-      if (usePread) {
-        scanner = sf.getPreadScanner(cacheBlocks, readPt, i, 
canOptimizeForNonNullColumn);
-      } else {
-        scanner = sf.getStreamScanner(canUseDrop, cacheBlocks, isCompaction, 
readPt, i,
-          canOptimizeForNonNullColumn);
+    boolean succ = false;
+    try {
+      for (int i = 0, n = files.size(); i < n; i++) {
+        HStoreFile sf = sortedFiles.remove();
+        StoreFileScanner scanner;
+        if (usePread) {
+          scanner = sf.getPreadScanner(cacheBlocks, readPt, i, 
canOptimizeForNonNullColumn);
+        } else {
+          scanner = sf.getStreamScanner(canUseDrop, cacheBlocks, isCompaction, 
readPt, i,
+              canOptimizeForNonNullColumn);
+        }
+        scanners.add(scanner);
+      }
+      succ = true;
+    } finally {
+      if (!succ) {
+        for (StoreFileScanner scanner : scanners) {
+          scanner.close();
+        }
       }
-      scanners.add(scanner);
     }
     return scanners;
   }

Reply via email to