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

szetszwo pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/ratis.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 7ecc21424 RATIS-1748. Cache getMetricName to reduce garbage (#786)
7ecc21424 is described below

commit 7ecc214248f3880a9caa69825729abe27766a324
Author: Lari Hotari <[email protected]>
AuthorDate: Thu Nov 17 22:30:18 2022 +0200

    RATIS-1748. Cache getMetricName to reduce garbage (#786)
    
    (cherry picked from commit 9724a24af8d5a982526d3925cbc6409828112ee9)
---
 .../java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java   | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git 
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
 
b/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
index 3f213ba24..952ab97b0 100644
--- 
a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
+++ 
b/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
@@ -19,6 +19,7 @@ package org.apache.ratis.metrics.impl;
 
 import java.util.Map;
 import java.util.SortedMap;
+import java.util.concurrent.ConcurrentHashMap;
 
 import com.codahale.metrics.ConsoleReporter;
 import com.codahale.metrics.Counter;
@@ -43,6 +44,7 @@ public class RatisMetricRegistryImpl implements 
RatisMetricRegistry {
   private MetricRegistry metricRegistry = new MetricRegistry();
 
   private final MetricRegistryInfo info;
+  private final Map<String, String> metricNameCache = new 
ConcurrentHashMap<>();
 
   private JmxReporter jmxReporter;
   private ConsoleReporter consoleReporter;
@@ -101,7 +103,7 @@ public class RatisMetricRegistryImpl implements 
RatisMetricRegistry {
   }
 
   private String getMetricName(String shortName) {
-    return MetricRegistry.name(info.getName(), shortName);
+    return metricNameCache.computeIfAbsent(shortName, key -> 
MetricRegistry.name(info.getName(), shortName));
   }
 
   @Override public <T extends Metric> T register(String name, T metric) throws 
IllegalArgumentException {

Reply via email to