This is an automated email from the ASF dual-hosted git repository.
szetszwo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ratis.git
The following commit(s) were added to refs/heads/master by this push:
new 9724a24af RATIS-1748. Cache getMetricName to reduce garbage (#786)
9724a24af is described below
commit 9724a24af8d5a982526d3925cbc6409828112ee9
Author: Lari Hotari <[email protected]>
AuthorDate: Thu Nov 17 22:30:18 2022 +0200
RATIS-1748. Cache getMetricName to reduce garbage (#786)
---
.../java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java | 4 +++-
.../apache/ratis/metrics/dropwizard3/Dm3RatisMetricRegistryImpl.java | 5 ++++-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git
a/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
index 4e8e58d47..4603bafbb 100644
---
a/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
+++
b/ratis-metrics-default/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
@@ -34,6 +34,7 @@ import
org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesti
import java.util.Map;
import java.util.Objects;
import java.util.SortedMap;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Supplier;
/**
@@ -51,6 +52,7 @@ public class RatisMetricRegistryImpl implements
RatisMetricRegistry {
private final MetricRegistryInfo info;
private final String namePrefix;
+ private final Map<String, String> metricNameCache = new
ConcurrentHashMap<>();
private JmxReporter jmxReporter;
private ConsoleReporter consoleReporter;
@@ -113,7 +115,7 @@ public class RatisMetricRegistryImpl implements
RatisMetricRegistry {
}
private String getMetricName(String shortName) {
- return MetricRegistry.name(namePrefix, shortName);
+ return metricNameCache.computeIfAbsent(shortName, key ->
MetricRegistry.name(namePrefix, shortName));
}
private <T extends Metric> T register(String name, T metric) throws
IllegalArgumentException {
diff --git
a/ratis-metrics-dropwizard3/src/main/java/org/apache/ratis/metrics/dropwizard3/Dm3RatisMetricRegistryImpl.java
b/ratis-metrics-dropwizard3/src/main/java/org/apache/ratis/metrics/dropwizard3/Dm3RatisMetricRegistryImpl.java
index d8b20d108..8b82e795d 100644
---
a/ratis-metrics-dropwizard3/src/main/java/org/apache/ratis/metrics/dropwizard3/Dm3RatisMetricRegistryImpl.java
+++
b/ratis-metrics-dropwizard3/src/main/java/org/apache/ratis/metrics/dropwizard3/Dm3RatisMetricRegistryImpl.java
@@ -29,11 +29,13 @@ import com.codahale.metrics.MetricFilter;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.MetricSet;
import com.codahale.metrics.JmxReporter;
+
import
org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesting;
import java.util.Map;
import java.util.Objects;
import java.util.SortedMap;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Supplier;
/**
@@ -51,6 +53,7 @@ public class Dm3RatisMetricRegistryImpl implements
RatisMetricRegistry {
private final MetricRegistryInfo info;
private final String namePrefix;
+ private final Map<String, String> metricNameCache = new
ConcurrentHashMap<>();
private JmxReporter jmxReporter;
private ConsoleReporter consoleReporter;
@@ -113,7 +116,7 @@ public class Dm3RatisMetricRegistryImpl implements
RatisMetricRegistry {
}
private String getMetricName(String shortName) {
- return MetricRegistry.name(namePrefix, shortName);
+ return metricNameCache.computeIfAbsent(shortName, key ->
MetricRegistry.name(namePrefix, shortName));
}
private <T extends Metric> T register(String name, T metric) throws
IllegalArgumentException {