This is an automated email from the ASF dual-hosted git repository.

vjasani pushed a commit to branch branch-2.5
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.5 by this push:
     new 1b0d2a24a8b HBASE-29626: Refactor server side scan metrics for Coproc 
hooks (#7348) (#7349)
1b0d2a24a8b is described below

commit 1b0d2a24a8b163e3ab2090bc63c47cd7ff485679
Author: sanjeet006py <[email protected]>
AuthorDate: Tue Oct 7 01:10:09 2025 +0530

    HBASE-29626: Refactor server side scan metrics for Coproc hooks (#7348) 
(#7349)
    
    Signed-off-by: Viraj Jasani <[email protected]>
---
 .../ThreadLocalServerSideScanMetrics.java          |  5 ++++-
 .../hadoop/hbase/regionserver/RSRpcServices.java   |  8 ++++++-
 .../hbase/regionserver/RegionScannerImpl.java      | 26 ----------------------
 3 files changed, 11 insertions(+), 28 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/ThreadLocalServerSideScanMetrics.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/ThreadLocalServerSideScanMetrics.java
index 8c9ec24e866..1bd4caf7982 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/ThreadLocalServerSideScanMetrics.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/ThreadLocalServerSideScanMetrics.java
@@ -18,10 +18,12 @@
 package org.apache.hadoop.hbase.monitoring;
 
 import java.util.concurrent.atomic.AtomicLong;
+import org.apache.hadoop.hbase.HBaseInterfaceAudience;
 import org.apache.hadoop.hbase.client.metrics.ServerSideScanMetrics;
 import org.apache.hadoop.hbase.regionserver.RegionScanner;
 import org.apache.hadoop.hbase.regionserver.ScannerContext;
 import org.apache.yetus.audience.InterfaceAudience;
+import org.apache.yetus.audience.InterfaceStability;
 
 /**
  * Thread-local storage for server-side scan metrics that captures performance 
data separately for
@@ -61,7 +63,8 @@ import org.apache.yetus.audience.InterfaceAudience;
  * @see RegionScanner
  * @see org.apache.hadoop.hbase.regionserver.handler.ParallelSeekHandler
  */
[email protected]
[email protected](HBaseInterfaceAudience.PHOENIX)
[email protected]
 public final class ThreadLocalServerSideScanMetrics {
   private ThreadLocalServerSideScanMetrics() {
   }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index 54ffbc043ce..c63a3e827b2 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -113,6 +113,7 @@ import org.apache.hadoop.hbase.ipc.ServerRpcController;
 import org.apache.hadoop.hbase.log.HBaseMarkers;
 import org.apache.hadoop.hbase.master.HMaster;
 import org.apache.hadoop.hbase.master.MasterRpcServices;
+import org.apache.hadoop.hbase.monitoring.ThreadLocalServerSideScanMetrics;
 import org.apache.hadoop.hbase.namequeues.NamedQueuePayload;
 import org.apache.hadoop.hbase.namequeues.NamedQueueRecorder;
 import org.apache.hadoop.hbase.namequeues.RpcLogDetails;
@@ -3549,6 +3550,11 @@ public class RSRpcServices
       }
       throw new ServiceException(e);
     }
+    boolean trackMetrics = request.hasTrackScanMetrics() && 
request.getTrackScanMetrics();
+    ThreadLocalServerSideScanMetrics.setScanMetricsEnabled(trackMetrics);
+    if (trackMetrics) {
+      ThreadLocalServerSideScanMetrics.reset();
+    }
     requestCount.increment();
     rpcScanRequestCount.increment();
     RegionScannerHolder rsh;
@@ -3636,7 +3642,6 @@ public class RSRpcServices
     boolean scannerClosed = false;
     try {
       List<Result> results = new ArrayList<>(Math.min(rows, 512));
-      boolean trackMetrics = request.hasTrackScanMetrics() && 
request.getTrackScanMetrics();
       ServerSideScanMetrics scanMetrics = trackMetrics ? new 
ServerSideScanMetrics() : null;
       if (rows > 0) {
         boolean done = false;
@@ -3715,6 +3720,7 @@ public class RSRpcServices
           
scanMetrics.addToCounter(ServerSideScanMetrics.RPC_SCAN_QUEUE_WAIT_TIME_METRIC_NAME,
             rpcQueueWaitTime);
         }
+        
ThreadLocalServerSideScanMetrics.populateServerSideScanMetrics(scanMetrics);
         Map<String, Long> metrics = scanMetrics.getMetricsMap();
         ScanMetrics.Builder metricBuilder = ScanMetrics.newBuilder();
         NameInt64Pair.Builder pairBuilder = NameInt64Pair.newBuilder();
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScannerImpl.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScannerImpl.java
index 7fc5f594d56..c4902ac0ecb 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScannerImpl.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScannerImpl.java
@@ -44,7 +44,6 @@ import 
org.apache.hadoop.hbase.ipc.CallerDisconnectedException;
 import org.apache.hadoop.hbase.ipc.RpcCall;
 import org.apache.hadoop.hbase.ipc.RpcCallback;
 import org.apache.hadoop.hbase.ipc.RpcServer;
-import org.apache.hadoop.hbase.monitoring.ThreadLocalServerSideScanMetrics;
 import org.apache.hadoop.hbase.regionserver.Region.Operation;
 import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;
 import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;
@@ -95,8 +94,6 @@ class RegionScannerImpl implements RegionScanner, Shipper, 
RpcCallback {
 
   private RegionServerServices rsServices;
 
-  private ServerSideScanMetrics scannerInitMetrics = null;
-
   @Override
   public RegionInfo getRegionInfo() {
     return region.getRegionInfo();
@@ -147,16 +144,7 @@ class RegionScannerImpl implements RegionScanner, Shipper, 
RpcCallback {
     } finally {
       
region.smallestReadPointCalcLock.unlock(ReadPointCalculationLock.LockType.RECORDING_LOCK);
     }
-    boolean isScanMetricsEnabled = scan.isScanMetricsEnabled();
-    
ThreadLocalServerSideScanMetrics.setScanMetricsEnabled(isScanMetricsEnabled);
-    if (isScanMetricsEnabled) {
-      this.scannerInitMetrics = new ServerSideScanMetrics();
-      ThreadLocalServerSideScanMetrics.reset();
-    }
     initializeScanners(scan, additionalScanners);
-    if (isScanMetricsEnabled) {
-      
ThreadLocalServerSideScanMetrics.populateServerSideScanMetrics(scannerInitMetrics);
-    }
   }
 
   private void initializeScanners(Scan scan, List<KeyValueScanner> 
additionalScanners)
@@ -285,16 +273,6 @@ class RegionScannerImpl implements RegionScanner, Shipper, 
RpcCallback {
       throw new UnknownScannerException("Scanner was closed");
     }
     boolean moreValues = false;
-    boolean isScanMetricsEnabled = scannerContext.isTrackingMetrics();
-    
ThreadLocalServerSideScanMetrics.setScanMetricsEnabled(isScanMetricsEnabled);
-    if (isScanMetricsEnabled) {
-      ThreadLocalServerSideScanMetrics.reset();
-      ServerSideScanMetrics scanMetrics = scannerContext.getMetrics();
-      if (scannerInitMetrics != null) {
-        scannerInitMetrics.getMetricsMap().forEach(scanMetrics::addToCounter);
-        scannerInitMetrics = null;
-      }
-    }
     if (outResults.isEmpty()) {
       // Usually outResults is empty. This is true when next is called
       // to handle scan or get operation.
@@ -304,10 +282,6 @@ class RegionScannerImpl implements RegionScanner, Shipper, 
RpcCallback {
       moreValues = nextInternal(tmpList, scannerContext);
       outResults.addAll(tmpList);
     }
-    if (isScanMetricsEnabled) {
-      ServerSideScanMetrics scanMetrics = scannerContext.getMetrics();
-      
ThreadLocalServerSideScanMetrics.populateServerSideScanMetrics(scanMetrics);
-    }
     region.addReadRequestsCount(1);
     if (region.getMetrics() != null) {
       region.getMetrics().updateReadRequestCount();

Reply via email to