From d1ebc3d2a8d5c2f8d3cd05877a812c7ffec0c951 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 --- .../org/apache/hadoop/hbase/regionserver/StoreScanner.java | 7 ++++--- 1 file changed, 4 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..31856e3f09 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 @@ -851,8 +851,7 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner // Implementation of ChangedReadersObserver @Override public void updateReaders(List sfs, List memStoreScanners) throws IOException { - if (CollectionUtils.isEmpty(sfs) - && CollectionUtils.isEmpty(memStoreScanners)) { + if (CollectionUtils.isEmpty(sfs) && CollectionUtils.isEmpty(memStoreScanners)) { return; } flushLock.lock(); @@ -860,7 +859,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 (!CollectionUtils.isEmpty(memStoreScanners)) { + clearAndClose(new ArrayList<>(memStoreScanners)); + } return; } flushed = true; -- 2.18.0