Repository: hbase
Updated Branches:
  refs/heads/branch-1.2 8def63250 -> 20800f899


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/20800f89
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/20800f89
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/20800f89

Branch: refs/heads/branch-1.2
Commit: 20800f899dbcf827d0f202f3bc5d5633f3df71fa
Parents: 8def632
Author: Chia-Ping Tsai <chia7...@gmail.com>
Authored: Wed Dec 13 22:01:19 2017 +0800
Committer: Chia-Ping Tsai <chia7...@gmail.com>
Committed: Wed Dec 13 22:10:45 2017 +0800

----------------------------------------------------------------------
 .../hbase/regionserver/StoreFileScanner.java    | 24 ++++++++++++++------
 1 file changed, 17 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/20800f89/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 a55c3da..6a83753 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
@@ -119,13 +119,23 @@ public class StoreFileScanner implements KeyValueScanner {
       ScanQueryMatcher matcher, long readPt, boolean isPrimaryReplica) throws 
IOException {
     List<StoreFileScanner> scanners = new ArrayList<StoreFileScanner>(
         files.size());
-    for (StoreFile file : files) {
-      StoreFile.Reader r = file.createReader(canUseDrop);
-      r.setReplicaStoreFile(isPrimaryReplica);
-      StoreFileScanner scanner = r.getStoreFileScanner(cacheBlocks, usePread,
-          isCompaction, readPt);
-      scanner.setScanQueryMatcher(matcher);
-      scanners.add(scanner);
+    boolean succ = false;
+    try {
+      for (StoreFile file : files) {
+        StoreFile.Reader r = file.createReader(canUseDrop);
+        r.setReplicaStoreFile(isPrimaryReplica);
+        StoreFileScanner scanner = r.getStoreFileScanner(cacheBlocks, usePread,
+            isCompaction, readPt);
+        scanner.setScanQueryMatcher(matcher);
+        scanners.add(scanner);
+      }
+      succ = true;
+    } finally {
+      if (!succ) {
+        for (StoreFileScanner scanner : scanners) {
+          scanner.close();
+        }
+      }
     }
     return scanners;
   }

Reply via email to