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 {

Reply via email to