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; }