HBASE-11876 RegionScanner.nextRaw should not update metrics
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/23a4181d Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/23a4181d Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/23a4181d Branch: refs/heads/0.98 Commit: 23a4181d1ecc5f492c16dc579bff92eef7d209f1 Parents: 7f28fcf Author: Andrew Purtell <[email protected]> Authored: Tue Sep 2 18:28:58 2014 -0700 Committer: Andrew Purtell <[email protected]> Committed: Tue Sep 2 18:28:58 2014 -0700 ---------------------------------------------------------------------- .../hadoop/hbase/regionserver/HRegion.java | 21 ++++++++++---------- .../hbase/regionserver/RegionScanner.java | 1 + 2 files changed, 11 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/23a4181d/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index 7169904..524dba6 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -3817,7 +3817,16 @@ public class HRegion implements HeapSize { // , Writable{ startRegionOperation(Operation.SCAN); readRequestsCount.increment(); try { - return nextRaw(outResults, limit); + boolean returnResult = nextRaw(outResults, limit); + if (region != null && region.metricsRegion != null) { + long totalSize = 0; + for (Cell cell: outResults) { + KeyValue kv = KeyValueUtil.ensureKeyValue(cell); + totalSize += kv.getLength(); + } + region.metricsRegion.updateScanNext(totalSize); + } + return returnResult; } finally { closeRegionOperation(Operation.SCAN); } @@ -3845,19 +3854,9 @@ public class HRegion implements HeapSize { // , Writable{ if (isFilterDoneInternal()) { returnResult = false; } - if (region != null && region.metricsRegion != null) { - long totalSize = 0; - for(Cell c:outResults) { - // TODO clean up - KeyValue kv = KeyValueUtil.ensureKeyValue(c); - totalSize += kv.getLength(); - } - region.metricsRegion.updateScanNext(totalSize); - } return returnResult; } - private void populateFromJoinedHeap(List<Cell> results, int limit) throws IOException { assert joinedContinuationRow != null; http://git-wip-us.apache.org/repos/asf/hbase/blob/23a4181d/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java index 07cbc4c..f75b9a2 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java @@ -69,6 +69,7 @@ public interface RegionScanner extends InternalScanner { * to return. * This is a special internal method to be called from coprocessor hooks to avoid expensive setup. * Caller must set the thread's readpoint, start and close a region operation, an synchronize on the scanner object. + * Caller should maintain and update metrics. * See {@link #nextRaw(List, int)} * @param result return output array * @return true if more rows exist after this one, false if scanner is done
