From a0df262d870630f897e6001629849cc9c70c1745 Mon Sep 17 00:00:00 2001 From: Guanghao Zhang Date: Sun, 12 Nov 2017 16:15:22 +0800 Subject: [PATCH] HBASE-19366 Backport to branch-1 HBASE-19035 Miss metrics when coprocessor use region scanner to read data --- .../java/org/apache/hadoop/hbase/regionserver/HRegion.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 a7ed011e7c..688e1eb9d6 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 @@ -285,8 +285,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi final Counter checkAndMutateChecksPassed = new Counter(); final Counter checkAndMutateChecksFailed = new Counter(); - //Number of requests + // Number of requests + // Count rows for scan final Counter readRequestsCount = new Counter(); + // Count rows for multi row mutations final Counter writeRequestsCount = new Counter(); // Number of requests blocked by memstore size. @@ -2639,7 +2641,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi // closest key is across all column families, since the data may be sparse checkRow(row, "getClosestRowBefore"); startRegionOperation(Operation.GET); - this.readRequestsCount.increment(); try { Result result = null; Get get = new Get(row); @@ -5870,7 +5871,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi "or a lengthy garbage collection"); } startRegionOperation(Operation.SCAN); - readRequestsCount.increment(); try { return nextRaw(outResults, scannerContext); } finally { @@ -5902,6 +5902,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi outResults.addAll(tmpList); } + if (!outResults.isEmpty()) { + readRequestsCount.increment(); + } + // If the size limit was reached it means a partial Result is being returned. Returning a // partial Result means that we should not reset the filters; filters should only be reset in // between rows @@ -7246,7 +7250,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi processor, now, this, mutations, walEdit, timeout); if (!mutations.isEmpty()) { - + writeRequestsCount.add(mutations.size()); // 5. Call the preBatchMutate hook processor.preBatchMutate(this, walEdit); -- 2.11.0 (Apple Git-81)