From 11a7f7c3fa2f5737eb6df3baf5f5b4541b96fbcc Mon Sep 17 00:00:00 2001 From: Andrew Purtell Date: Fri, 17 Aug 2018 15:34:18 -0700 Subject: [PATCH] HBASE-21069 NPE in StoreScanner.updateReaders causes RS to crash --- .../apache/hadoop/hbase/regionserver/StoreScanner.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 678308b397..2ebf9d350d 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 @@ -852,7 +852,7 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner @Override public void updateReaders(List sfs, List memStoreScanners) throws IOException { if (CollectionUtils.isEmpty(sfs) - && CollectionUtils.isEmpty(memStoreScanners)) { + && (memStoreScanners == null || CollectionUtils.isEmpty(memStoreScanners))) { return; } flushLock.lock(); @@ -860,7 +860,9 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner if (this.closing) { // Lets close scanners created by caller, since close() won't notice this. // memStoreScanners is immutable, so lets create a new list. - clearAndClose(new ArrayList<>(memStoreScanners)); + if (memStoreScanners != null) { + clearAndClose(new ArrayList<>(memStoreScanners)); + } return; } flushed = true; @@ -875,7 +877,7 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner List scanners = store.getScanners(sfs, cacheBlocks, get, usePread, isCompaction, matcher, scan.getStartRow(), scan.getStopRow(), this.readPt, false); flushedstoreFileScanners.addAll(scanners); - if (!CollectionUtils.isEmpty(memStoreScanners)) { + if (memStoreScanners != null && !CollectionUtils.isEmpty(memStoreScanners)) { clearAndClose(memStoreScannersAfterFlush); memStoreScannersAfterFlush.addAll(memStoreScanners); } -- 2.18.0