You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2019/10/13 02:45:42 UTC

[hbase] branch branch-2 updated: HBASE-23159 HStore#getStorefilesSize may throw NPE

This is an automated email from the ASF dual-hosted git repository.

stack pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 6f6d331  HBASE-23159 HStore#getStorefilesSize may throw NPE
6f6d331 is described below

commit 6f6d331f9f8c06475b37600e4f3c1f6519ce7329
Author: Lijin Bin <binlijin>
AuthorDate: Sat Oct 12 19:44:42 2019 -0700

    HBASE-23159 HStore#getStorefilesSize may throw NPE
---
 .../apache/hadoop/hbase/regionserver/HStore.java   | 35 +++++++++++++++-------
 1 file changed, 24 insertions(+), 11 deletions(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
index fd8f19d..dd7a9a7 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
@@ -2135,24 +2135,37 @@ public class HStore implements Store, HeapSize, StoreConfigInformation, Propagat
   }
 
   private long getTotalUmcompressedBytes(List<HStoreFile> files) {
-    return files.stream().filter(f -> f != null && f.getReader() != null)
-        .mapToLong(f -> f.getReader().getTotalUncompressedBytes()).sum();
+    return files.stream().filter(f -> f != null).mapToLong(f -> {
+      StoreFileReader reader = f.getReader();
+      if (reader == null) {
+        return 0;
+      } else {
+        return reader.getTotalUncompressedBytes();
+      }
+    }).sum();
   }
 
   private long getStorefilesSize(Collection<HStoreFile> files, Predicate<HStoreFile> predicate) {
     return files.stream().filter(f -> f != null && f.getReader() != null).filter(predicate)
-        .mapToLong(f -> f.getReader().length()).sum();
+        .mapToLong(f -> {
+          StoreFileReader reader = f.getReader();
+          if (reader == null) {
+            return 0;
+          } else {
+            return reader.length();
+          }
+        }).sum();
   }
 
   private long getStoreFileFieldSize(ToLongFunction<StoreFileReader> f) {
-    return this.storeEngine.getStoreFileManager().getStorefiles().stream().filter(sf -> {
-      if (sf.getReader() == null) {
-        LOG.warn("StoreFile {} has a null Reader", sf);
-        return false;
-      } else {
-        return true;
-      }
-    }).map(HStoreFile::getReader).mapToLong(f).sum();
+    return this.storeEngine.getStoreFileManager().getStorefiles().stream()
+        .map(HStoreFile::getReader).filter(reader -> {
+          if (reader == null) {
+            return false;
+          } else {
+            return true;
+          }
+        }).mapToLong(f).sum();
   }
 
   @Override