You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Lijin Bin (Jira)" <ji...@apache.org> on 2019/12/03 03:09:00 UTC
[jira] [Updated] (HBASE-23356) When construct StoreScanner throw
exceptions it is possible to left some KeyValueScanner not closed.
[ https://issues.apache.org/jira/browse/HBASE-23356?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Lijin Bin updated HBASE-23356:
------------------------------
Description:
{code}
try {
// Pass columns to try to filter out unnecessary StoreFiles.
List<KeyValueScanner> scanners = selectScannersFrom(store,
store.getScanners(cacheBlocks, scanUsePread, false, matcher, scan.getStartRow(),
scan.includeStartRow(), scan.getStopRow(), scan.includeStopRow(), this.readPt));
// Seek all scanners to the start of the Row (or if the exact matching row
// key does not exist, then to the start of the next matching Row).
// Always check bloom filter to optimize the top row seek for delete
// family marker.
seekScanners(scanners, matcher.getStartKey(), explicitColumnQuery && lazySeekEnabledGlobally,
parallelSeekEnabled);
......
} catch (IOException e) {
// remove us from the HStore#changedReaderObservers here or we'll have no chance to
// and might cause memory leak
store.deleteChangedReaderObserver(this);
throw e;
}
{code}
Like the above, if the seekScanners(scanners,...) throws exception, the scanners do not closed, we need to close the scanners.
> When construct StoreScanner throw exceptions it is possible to left some KeyValueScanner not closed.
> ----------------------------------------------------------------------------------------------------
>
> Key: HBASE-23356
> URL: https://issues.apache.org/jira/browse/HBASE-23356
> Project: HBase
> Issue Type: Bug
> Reporter: Lijin Bin
> Assignee: Lijin Bin
> Priority: Major
>
> {code}
> try {
> // Pass columns to try to filter out unnecessary StoreFiles.
> List<KeyValueScanner> scanners = selectScannersFrom(store,
> store.getScanners(cacheBlocks, scanUsePread, false, matcher, scan.getStartRow(),
> scan.includeStartRow(), scan.getStopRow(), scan.includeStopRow(), this.readPt));
> // Seek all scanners to the start of the Row (or if the exact matching row
> // key does not exist, then to the start of the next matching Row).
> // Always check bloom filter to optimize the top row seek for delete
> // family marker.
> seekScanners(scanners, matcher.getStartKey(), explicitColumnQuery && lazySeekEnabledGlobally,
> parallelSeekEnabled);
>
> ......
> } catch (IOException e) {
> // remove us from the HStore#changedReaderObservers here or we'll have no chance to
> // and might cause memory leak
> store.deleteChangedReaderObserver(this);
> throw e;
> }
> {code}
> Like the above, if the seekScanners(scanners,...) throws exception, the scanners do not closed, we need to close the scanners.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)