Repository: hbase Updated Branches: refs/heads/branch-1.3 a7d201dc6 -> e6b222b2d
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/e6b222b2 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/e6b222b2 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/e6b222b2 Branch: refs/heads/branch-1.3 Commit: e6b222b2d8d8c2b11ae70d7978520c0d4a42655b Parents: a7d201d Author: Chia-Ping Tsai <[email protected]> Authored: Wed Dec 13 22:01:19 2017 +0800 Committer: Chia-Ping Tsai <[email protected]> Committed: Wed Dec 13 22:01:19 2017 +0800 ---------------------------------------------------------------------- .../hbase/regionserver/StoreFileScanner.java | 24 ++++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/e6b222b2/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 9eee208..3a50ea9 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; }
