From 3b5efda14875dd5ded3bb11aec4e690d9d42e2a4 Mon Sep 17 00:00:00 2001 From: dvdreddy Date: Wed, 13 Jan 2016 14:10:41 -0800 Subject: [PATCH] HBASE-15101 close un-selected KeyValueScanners to avoid leaking ref counts --- .../main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java index 3049608..df1385d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java @@ -49,6 +49,7 @@ import org.apache.hadoop.hbase.regionserver.handler.ParallelSeekHandler; import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; import com.google.common.annotations.VisibleForTesting; +import org.apache.hadoop.hbase.util.Pair; /** * Scanner scans both the memstore and the Store. Coalesce KeyValue stream @@ -376,6 +377,8 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner /** * Filters the given list of scanners using Bloom filter, time range, and * TTL. + * Returns a pair of lists of scanners where the first element is the + * selected scanners and the second element is the ignored scanners */ protected List selectScannersFrom( final List allScanners) { @@ -407,6 +410,8 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner if (kvs.shouldUseScanner(scan, store, expiredTimestampCutoff)) { scanners.add(kvs); + } else { + kvs.close(); } } return scanners; -- 2.2.1