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();