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

Reply via email to