You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by sz...@apache.org on 2022/11/17 20:30:27 UTC

[ratis] branch master updated: RATIS-1748. Cache getMetricName to reduce garbage (#786)

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 <lh...@users.noreply.github.com>
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 {