diff --git src/main/java/org/apache/hadoop/hbase/regionserver/Store.java src/main/java/org/apache/hadoop/hbase/regionserver/Store.java index e4ccac0..69dfa0c 100644 --- src/main/java/org/apache/hadoop/hbase/regionserver/Store.java +++ src/main/java/org/apache/hadoop/hbase/regionserver/Store.java @@ -63,6 +63,7 @@ import org.apache.hadoop.hbase.io.hfile.HFileScanner; import org.apache.hadoop.hbase.io.hfile.InvalidHFileException; import org.apache.hadoop.hbase.io.hfile.NoOpDataBlockEncoder; import org.apache.hadoop.hbase.monitoring.MonitoredTask; +import org.apache.hadoop.hbase.regionserver.StoreFile.Reader; import org.apache.hadoop.hbase.regionserver.StoreScanner.ScanType; import org.apache.hadoop.hbase.regionserver.compactions.CompactSelection; import org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress; @@ -384,15 +385,20 @@ public class Store extends SchemaConfigured implements HeapSize { try { for (int i = 0; i < totalValidStoreFile; i++) { Future future = completionService.take(); - StoreFile storeFile = future.get(); - long length = storeFile.getReader().length(); + StoreFile s = future.get(); + if (s == null) continue; + Reader r = s.getReader(); + if (r == null) { + LOG.warn("StoreFile " + s + " has a null Reader"); + continue; + } + long length = r.length(); this.storeSize += length; - this.totalUncompressedBytes += - storeFile.getReader().getTotalUncompressedBytes(); + this.totalUncompressedBytes += r.getTotalUncompressedBytes(); if (LOG.isDebugEnabled()) { - LOG.debug("loaded " + storeFile.toStringDetailed()); + LOG.debug("loaded " + s.toStringDetailed()); } - results.add(storeFile); + results.add(s); } } catch (InterruptedException e) { throw new IOException(e); @@ -998,14 +1004,14 @@ public class Store extends SchemaConfigured implements HeapSize { filesCompacting.removeAll(filesToCompact); } } - + long len = sf.getReader() == null? 0: sf.getReader().length(); LOG.info("Completed" + (cr.isMajor() ? " major " : " ") + "compaction of " + filesToCompact.size() + " file(s) in " + this.storeNameStr + " of " + this.region.getRegionInfo().getRegionNameAsString() + " into " + (sf == null ? "none" : sf.getPath().getName()) + ", size=" + (sf == null ? "none" : - StringUtils.humanReadableInt(sf.getReader().length())) + StringUtils.humanReadableInt(len)) + "; total size for store is " + StringUtils.humanReadableInt(storeSize)); } @@ -2030,7 +2036,8 @@ public class Store extends SchemaConfigured implements HeapSize { long getStorefilesSize() { long size = 0; for (StoreFile s: storefiles) { - StoreFile.Reader r = s.getReader(); + if (s == null) continue; + Reader r = s.getReader(); if (r == null) { LOG.warn("StoreFile " + s + " has a null Reader"); continue; @@ -2066,6 +2073,12 @@ public class Store extends SchemaConfigured implements HeapSize { long getTotalStaticIndexSize() { long size = 0; for (StoreFile s : storefiles) { + if (s == null) continue; + Reader r = s.getReader(); + if (r == null) { + LOG.warn("StoreFile " + s + " has a null Reader"); + continue; + } size += s.getReader().getUncompressedDataIndexSize(); } return size; @@ -2081,7 +2094,12 @@ public class Store extends SchemaConfigured implements HeapSize { long getTotalStaticBloomSize() { long size = 0; for (StoreFile s : storefiles) { - StoreFile.Reader r = s.getReader(); + if (s == null) continue; + Reader r = s.getReader(); + if (r == null) { + LOG.warn("StoreFile " + s + " has a null Reader"); + continue; + } size += r.getTotalBloomSize(); } return size;