diff --git a/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index e6622a0..ed278c7 100644 --- a/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -2679,7 +2679,7 @@ public class HRegionServer implements HRegionInterface, HBaseRPCErrorHandler, } if (bypass != null) { return s.isFilterDone() && results.isEmpty() ? null - : results.toArray(new Result[0]); + : results.toArray(new Result[results.size()]); } } @@ -2722,7 +2722,7 @@ public class HRegionServer implements HRegionInterface, HBaseRPCErrorHandler, // and wants to tell the client to stop the scan. This is done by passing // a null result. return s.isFilterDone() && results.isEmpty() ? null - : results.toArray(new Result[0]); + : results.toArray(new Result[results.size()]); } catch (Throwable t) { if (t instanceof NotServingRegionException && scannerName != null) { this.scanners.remove(scannerName); diff --git a/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java b/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java index 6cb9711..c4ee384 100644 --- a/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java +++ b/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java @@ -53,6 +53,7 @@ public class StoreScanner extends NonLazyKeyValueScanner private String metricNamePrefix; + private String metricNamePrefixNext; // Used to indicate that the scanner has closed (see HBASE-1107) // Doesnt need to be volatile because it's always accessed via synchronized methods private boolean closing = false; @@ -455,8 +456,13 @@ public class StoreScanner extends NonLazyKeyValueScanner } } finally { if (cumulativeMetric > 0 && metric != null) { - RegionMetricsStorage.incrNumericMetric(this.metricNamePrefix + metric, - cumulativeMetric); + // OK to use identity here + if (metric == SchemaMetrics.METRIC_NEXTSIZE) { + if (metricNamePrefixNext == null) metricNamePrefixNext = metricNamePrefix + metric; + RegionMetricsStorage.incrNumericMetric(metricNamePrefixNext, cumulativeMetric); + } else { + RegionMetricsStorage.incrNumericMetric(metricNamePrefix + metric, cumulativeMetric); + } } }