From e520901be5e5815dc1e60d06d8a4dbf4d38ace2a Mon Sep 17 00:00:00 2001 From: wangyuanben <‘benwangyuanben@didiglobal.com’> Date: Mon, 23 Oct 2023 14:44:48 +0800 Subject: [PATCH 1/6] HDDS-9522. Add percentile for ProtocolMessageMetrics --- .../apache/hadoop/ozone/OzoneConfigKeys.java | 3 ++ .../container/common/impl/HddsDispatcher.java | 5 +- .../hdds/utils/ProtocolMessageMetrics.java | 50 +++++++++++++++++-- .../scm/server/SCMBlockProtocolServer.java | 3 +- .../scm/server/SCMClientProtocolServer.java | 3 +- .../scm/server/SCMDatanodeProtocolServer.java | 7 +-- .../scm/server/SCMSecurityProtocolServer.java | 10 ++-- .../ozone/TestOzoneConfigurationFields.java | 1 + .../apache/hadoop/ozone/om/OzoneManager.java | 2 +- .../scm/ReconDatanodeProtocolServer.java | 5 +- 10 files changed, 71 insertions(+), 18 deletions(-) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java index 9cf74c6cd862..d1ffcf73e482 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java @@ -182,6 +182,9 @@ public final class OzoneConfigKeys { public static final int OZONE_CLIENT_EC_GRPC_RETRIES_MAX_DEFAULT = 3; public static final String OZONE_GPRC_METRICS_PERCENTILES_INTERVALS_KEY = "ozone.grpc.metrics.percentiles.intervals"; + public static final String + OZONE_PROTOCOL_MESSAGE_METRICS_PERCENTILES_INTERVALS + = "ozone.protocol.message.metrics.percentiles.intervals"; /** * Ozone administrator users delimited by comma. diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java index 71b848660006..905e489eff71 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java @@ -123,10 +123,11 @@ public HddsDispatcher(ConfigurationSource config, ContainerSet contSet, : new NoopTokenVerifier(); protocolMetrics = - new ProtocolMessageMetrics<>( + ProtocolMessageMetrics.create( "HddsDispatcher", "HDDS dispatcher metrics", - Type.values()); + Type.values(), + conf); this.dispatcher = new OzoneProtocolMessageDispatcher<>("DatanodeClient", diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java index 7d72b3aac28f..d64e2ab732ef 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java @@ -22,6 +22,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; +import org.apache.hadoop.hdds.conf.ConfigurationSource; import org.apache.hadoop.metrics2.MetricsCollector; import org.apache.hadoop.metrics2.MetricsInfo; import org.apache.hadoop.metrics2.MetricsRecordBuilder; @@ -29,6 +30,9 @@ import org.apache.hadoop.metrics2.MetricsTag; import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem; import org.apache.hadoop.metrics2.lib.Interns; +import org.apache.hadoop.metrics2.lib.MetricsRegistry; +import org.apache.hadoop.metrics2.lib.MutableQuantiles; +import org.apache.hadoop.ozone.OzoneConfigKeys; import org.apache.ratis.util.UncheckedAutoCloseable; /** @@ -40,32 +44,59 @@ public class ProtocolMessageMetrics implements MetricsSource { private final String description; + private final MetricsRegistry registry; + + private final boolean quantileEnable; + private final Map counters = new ConcurrentHashMap<>(); private final Map elapsedTimes = new ConcurrentHashMap<>(); + private final Map quantiles = + new ConcurrentHashMap<>(); + private final AtomicInteger concurrency = new AtomicInteger(0); public static ProtocolMessageMetrics create(String name, - String description, KEY[] types) { - return new ProtocolMessageMetrics(name, description, types); + String description, KEY[] types, ConfigurationSource conf) { + return new ProtocolMessageMetrics(name, description, types, conf); } public ProtocolMessageMetrics(String name, String description, - KEY[] values) { + KEY[] values, ConfigurationSource conf) { this.name = name; this.description = description; + registry = new MetricsRegistry(name + "MessageMetrics"); + int[] intervals = conf.getInts( + OzoneConfigKeys.OZONE_PROTOCOL_MESSAGE_METRICS_PERCENTILES_INTERVALS); + quantileEnable = (intervals.length > 0); for (KEY value : values) { counters.put(value, new AtomicLong(0)); elapsedTimes.put(value, new AtomicLong(0)); + if (quantileEnable) { + MutableQuantiles[] mutableQuantiles = + new MutableQuantiles[intervals.length]; + quantiles.put(value, mutableQuantiles); + for (int i = 0; i < intervals.length; i++) { + mutableQuantiles[i] = registry.newQuantiles( + value.toString() + "RpcTime" + intervals[i] + "s", + value.toString() + "rpc time in milli second", + "ops", "latency", intervals[i]); + } + } } } public void increment(KEY key, long duration) { counters.get(key).incrementAndGet(); elapsedTimes.get(key).addAndGet(duration); + if (quantileEnable) { + for (MutableQuantiles q : quantiles.get(key)) { + q.add(duration); + } + } } public UncheckedAutoCloseable measure(KEY key) { @@ -74,7 +105,13 @@ public UncheckedAutoCloseable measure(KEY key) { return () -> { concurrency.decrementAndGet(); counters.get(key).incrementAndGet(); - elapsedTimes.get(key).addAndGet(System.currentTimeMillis() - startTime); + long delta = System.currentTimeMillis() - startTime; + elapsedTimes.get(key).addAndGet(delta); + if (quantileEnable) { + for (MutableQuantiles q : quantiles.get(key)) { + q.add(delta); + } + } }; } @@ -89,6 +126,7 @@ public void unregister() { @Override public void getMetrics(MetricsCollector collector, boolean all) { + registry.snapshot(collector.addRecord(registry.info()), all); counters.forEach((key, value) -> { MetricsRecordBuilder builder = collector.addRecord(name); @@ -129,4 +167,8 @@ public String description() { return description; } } + + public boolean isQuantileEnable() { + return quantileEnable; + } } diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMBlockProtocolServer.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMBlockProtocolServer.java index 7d09a7af4bc9..8822ce81825d 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMBlockProtocolServer.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMBlockProtocolServer.java @@ -112,7 +112,8 @@ public SCMBlockProtocolServer(OzoneConfiguration conf, ProtocolMessageMetrics.create( "ScmBlockLocationProtocol", "SCM Block location protocol counters", - ScmBlockLocationProtocolProtos.Type.values()); + ScmBlockLocationProtocolProtos.Type.values(), + conf); // SCM Block Service RPC. BlockingService blockProtoPbService = diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java index 21ab8a25016c..d57b43a35cd0 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java @@ -149,7 +149,8 @@ public SCMClientProtocolServer(OzoneConfiguration conf, protocolMetrics = ProtocolMessageMetrics .create("ScmContainerLocationProtocol", "SCM ContainerLocation protocol metrics", - StorageContainerLocationProtocolProtos.Type.values()); + StorageContainerLocationProtocolProtos.Type.values(), + conf); // SCM Container Service RPC BlockingService storageProtoPbService = diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMDatanodeProtocolServer.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMDatanodeProtocolServer.java index dc6ed2ccb103..a67b641251e6 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMDatanodeProtocolServer.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMDatanodeProtocolServer.java @@ -30,6 +30,7 @@ import java.util.concurrent.TimeoutException; import org.apache.hadoop.fs.CommonConfigurationKeys; +import org.apache.hadoop.hdds.conf.ConfigurationSource; import org.apache.hadoop.hdds.conf.OzoneConfiguration; import org.apache.hadoop.hdds.protocol.DatanodeDetails; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; @@ -156,7 +157,7 @@ public SCMDatanodeProtocolServer(final OzoneConfiguration conf, InetSocketAddress datanodeRpcAddr = getDataNodeBindAddress( conf, scm.getScmNodeDetails()); - protocolMessageMetrics = getProtocolMessageMetrics(); + protocolMessageMetrics = getProtocolMessageMetrics(conf); final int handlerCount = conf.getInt(OZONE_SCM_HANDLER_COUNT_KEY, OZONE_SCM_HANDLER_COUNT_DEFAULT); @@ -469,10 +470,10 @@ private static String flatten(String input) { * @return ProtocolMessageMetrics */ protected ProtocolMessageMetrics - getProtocolMessageMetrics() { + getProtocolMessageMetrics(ConfigurationSource conf) { return ProtocolMessageMetrics .create("SCMDatanodeProtocol", "SCM Datanode protocol", - StorageContainerDatanodeProtocolProtos.Type.values()); + StorageContainerDatanodeProtocolProtos.Type.values(), conf); } /** diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMSecurityProtocolServer.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMSecurityProtocolServer.java index bad326cad1e1..bc6ca3488728 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMSecurityProtocolServer.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMSecurityProtocolServer.java @@ -145,12 +145,14 @@ public class SCMSecurityProtocolServer implements SCMSecurityProtocol, // SCM security service RPC service. RPC.setProtocolEngine(conf, SCMSecurityProtocolPB.class, ProtobufRpcEngine.class); - metrics = new ProtocolMessageMetrics("ScmSecurityProtocol", + metrics = ProtocolMessageMetrics.create("ScmSecurityProtocol", "SCM Security protocol metrics", - SCMSecurityProtocolProtos.Type.values()); - secretKeyMetrics = new ProtocolMessageMetrics("ScmSecretKeyProtocol", + SCMSecurityProtocolProtos.Type.values(), + conf); + secretKeyMetrics = ProtocolMessageMetrics.create("ScmSecretKeyProtocol", "SCM SecretKey protocol metrics", - SCMSecretKeyProtocolProtos.Type.values()); + SCMSecretKeyProtocolProtos.Type.values(), + conf); BlockingService secureProtoPbService = SCMSecurityProtocolProtos.SCMSecurityProtocolService .newReflectiveBlockingService( diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestOzoneConfigurationFields.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestOzoneConfigurationFields.java index cb29d61e1a4c..3dc6538b2a72 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestOzoneConfigurationFields.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestOzoneConfigurationFields.java @@ -112,6 +112,7 @@ private void addPropertiesNotInXml() { OzoneConfigKeys.OZONE_RECOVERING_CONTAINER_SCRUBBING_SERVICE_TIMEOUT, OzoneConfigKeys.OZONE_RECOVERING_CONTAINER_TIMEOUT, OzoneConfigKeys.OZONE_GPRC_METRICS_PERCENTILES_INTERVALS_KEY, + OzoneConfigKeys.OZONE_PROTOCOL_MESSAGE_METRICS_PERCENTILES_INTERVALS, ReconConfigKeys.RECON_SCM_CONFIG_PREFIX, ReconConfigKeys.OZONE_RECON_ADDRESS_KEY, ReconConfigKeys.OZONE_RECON_DATANODE_ADDRESS_KEY, diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java index 27dcd689eec8..1bc80905e4e8 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java @@ -697,7 +697,7 @@ private OzoneManager(OzoneConfiguration conf, StartupOption startupOption) omClientProtocolMetrics = ProtocolMessageMetrics .create("OmClientProtocol", "Ozone Manager RPC endpoint", - OzoneManagerProtocolProtos.Type.values()); + OzoneManagerProtocolProtos.Type.values(), conf); // Start Om Rpc Server. omRpcServer = getRpcServer(configuration); diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/scm/ReconDatanodeProtocolServer.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/scm/ReconDatanodeProtocolServer.java index 019e09790cf1..ced4279dba42 100644 --- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/scm/ReconDatanodeProtocolServer.java +++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/scm/ReconDatanodeProtocolServer.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.net.InetSocketAddress; +import org.apache.hadoop.hdds.conf.ConfigurationSource; import org.apache.hadoop.hdds.conf.OzoneConfiguration; import org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos; import org.apache.hadoop.hdds.scm.ha.SCMNodeDetails; @@ -51,10 +52,10 @@ public ReconDatanodeProtocolServer(OzoneConfiguration conf, @Override public ProtocolMessageMetrics - getProtocolMessageMetrics() { + getProtocolMessageMetrics(ConfigurationSource conf) { return ProtocolMessageMetrics .create("ReconDatanodeProtocol", "Recon Datanode protocol", - StorageContainerDatanodeProtocolProtos.Type.values()); + StorageContainerDatanodeProtocolProtos.Type.values(), conf); } @Override From b194f41fd9071e9a2082f54bbe5f5f5a356b1ffc Mon Sep 17 00:00:00 2001 From: wangyuanben <‘benwangyuanben@didiglobal.com’> Date: Fri, 10 Nov 2023 17:29:41 +0800 Subject: [PATCH 2/6] change the unit of time --- .../hadoop/hdds/utils/ProtocolMessageMetrics.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java index d64e2ab732ef..b5ec1425b2c7 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java @@ -64,7 +64,7 @@ public static ProtocolMessageMetrics create(String name, return new ProtocolMessageMetrics(name, description, types, conf); } - public ProtocolMessageMetrics(String name, String description, + private ProtocolMessageMetrics(String name, String description, KEY[] values, ConfigurationSource conf) { this.name = name; this.description = description; @@ -81,7 +81,7 @@ public ProtocolMessageMetrics(String name, String description, quantiles.put(value, mutableQuantiles); for (int i = 0; i < intervals.length; i++) { mutableQuantiles[i] = registry.newQuantiles( - value.toString() + "RpcTime" + intervals[i] + "s", + value.toString() + "RpcTime" + intervals[i] + "s" + "latencyMs", value.toString() + "rpc time in milli second", "ops", "latency", intervals[i]); } @@ -126,8 +126,7 @@ public void unregister() { @Override public void getMetrics(MetricsCollector collector, boolean all) { - registry.snapshot(collector.addRecord(registry.info()), all); - counters.forEach((key, value) -> { + counters.forEach((key, value) -> { MetricsRecordBuilder builder = collector.addRecord(name); builder.add( @@ -137,8 +136,12 @@ public void getMetrics(MetricsCollector collector, boolean all) { builder.addCounter( new MetricName("time", "Sum of the duration of the calls"), elapsedTimes.get(key).longValue()); + if (quantileEnable) { + for (MutableQuantiles mutableQuantiles : quantiles.get(key)) { + mutableQuantiles.snapshot(builder, all); + } + } builder.endRecord(); - }); MetricsRecordBuilder builder = collector.addRecord(name); builder.addCounter(new MetricName("concurrency", From 810d2ea918777605b8189b002461deb3bac47240 Mon Sep 17 00:00:00 2001 From: wangyuanben <‘benwangyuanben@didiglobal.com’> Date: Tue, 14 Nov 2023 14:17:16 +0800 Subject: [PATCH 3/6] fix checkstyle --- .../apache/hadoop/hdds/utils/ProtocolMessageMetrics.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java index b5ec1425b2c7..3f507b93eb3b 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java @@ -38,7 +38,7 @@ /** * Metrics to count all the subtypes of a specific message. */ -public class ProtocolMessageMetrics implements MetricsSource { +public final class ProtocolMessageMetrics implements MetricsSource { private final String name; @@ -126,9 +126,8 @@ public void unregister() { @Override public void getMetrics(MetricsCollector collector, boolean all) { - counters.forEach((key, value) -> { - MetricsRecordBuilder builder = - collector.addRecord(name); + counters.forEach((key, value) -> { + MetricsRecordBuilder builder = collector.addRecord(name); builder.add( new MetricsTag(Interns.info("type", "Message type"), key.toString())); builder.addCounter(new MetricName("counter", "Number of distinct calls"), From e8df67c838cfdfb2398ea155eb15e4acb013a314 Mon Sep 17 00:00:00 2001 From: wangyuanben <‘benwangyuanben@didiglobal.com’> Date: Thu, 16 Nov 2023 11:22:31 +0800 Subject: [PATCH 4/6] fix metrics name --- .../apache/hadoop/hdds/utils/ProtocolMessageMetrics.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java index 3f507b93eb3b..de59f6427cf1 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java @@ -44,8 +44,6 @@ public final class ProtocolMessageMetrics implements MetricsSource { private final String description; - private final MetricsRegistry registry; - private final boolean quantileEnable; private final Map counters = @@ -68,7 +66,6 @@ private ProtocolMessageMetrics(String name, String description, KEY[] values, ConfigurationSource conf) { this.name = name; this.description = description; - registry = new MetricsRegistry(name + "MessageMetrics"); int[] intervals = conf.getInts( OzoneConfigKeys.OZONE_PROTOCOL_MESSAGE_METRICS_PERCENTILES_INTERVALS); quantileEnable = (intervals.length > 0); @@ -76,14 +73,16 @@ private ProtocolMessageMetrics(String name, String description, counters.put(value, new AtomicLong(0)); elapsedTimes.put(value, new AtomicLong(0)); if (quantileEnable) { + MetricsRegistry registry = + new MetricsRegistry(value.toString() + "MessageMetrics"); MutableQuantiles[] mutableQuantiles = new MutableQuantiles[intervals.length]; quantiles.put(value, mutableQuantiles); for (int i = 0; i < intervals.length; i++) { mutableQuantiles[i] = registry.newQuantiles( - value.toString() + "RpcTime" + intervals[i] + "s" + "latencyMs", + intervals[i] + "s", value.toString() + "rpc time in milli second", - "ops", "latency", intervals[i]); + "ops", "latencyMs", intervals[i]); } } } From 7f83f3622a281a247c287273eaaddd866b1a4744 Mon Sep 17 00:00:00 2001 From: wangyuanben <‘benwangyuanben@didiglobal.com’> Date: Wed, 29 Nov 2023 19:09:44 +0800 Subject: [PATCH 5/6] cleanup useless method --- .../org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java index de59f6427cf1..7d2469911cba 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java @@ -168,8 +168,4 @@ public String description() { return description; } } - - public boolean isQuantileEnable() { - return quantileEnable; - } } From e40b7472a81076c6c223a60ceecd8bdc569ce11b Mon Sep 17 00:00:00 2001 From: wangyuanben <‘benwangyuanben@didiglobal.com’> Date: Wed, 3 Jan 2024 00:42:58 +0800 Subject: [PATCH 6/6] put quantiles back after adding --- .../apache/hadoop/hdds/utils/ProtocolMessageMetrics.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java index 7d2469911cba..875184b60611 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/ProtocolMessageMetrics.java @@ -92,9 +92,11 @@ public void increment(KEY key, long duration) { counters.get(key).incrementAndGet(); elapsedTimes.get(key).addAndGet(duration); if (quantileEnable) { - for (MutableQuantiles q : quantiles.get(key)) { + MutableQuantiles[] mutableQuantiles = quantiles.get(key); + for (MutableQuantiles q : mutableQuantiles) { q.add(duration); } + quantiles.put(key, mutableQuantiles); } } @@ -107,9 +109,11 @@ public UncheckedAutoCloseable measure(KEY key) { long delta = System.currentTimeMillis() - startTime; elapsedTimes.get(key).addAndGet(delta); if (quantileEnable) { - for (MutableQuantiles q : quantiles.get(key)) { + MutableQuantiles[] mutableQuantiles = quantiles.get(key); + for (MutableQuantiles q : mutableQuantiles) { q.add(delta); } + quantiles.put(key, mutableQuantiles); } }; }