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

hxd pushed a commit to branch feature/metric2021
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/feature/metric2021 by this 
push:
     new 4315055  add log output; implement counter
4315055 is described below

commit 4315055a5ef9c39057c6c38e51aea10c28e15ef8
Author: xiangdong huang <[email protected]>
AuthorDate: Sun Feb 21 11:08:20 2021 +0800

    add log output; implement counter
---
 .../org/apache/iotdb/metrics/MetricService.java    |  7 +++---
 .../micrometer/MicrometerMetricManager.java        | 27 ++++++++++++----------
 2 files changed, 18 insertions(+), 16 deletions(-)

diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java
index 1934300..50b0d7d 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java
@@ -53,16 +53,14 @@ public class MetricService {
         continue;
       }
       size++;
-      //      if (size > 1) {
-      //        throw new RuntimeException("More than one Metric 
Implementation is detected.");
-      //      }
       factory = mf;
-      break;
     }
 
     // if no more implementation, we use nothingFactory.
     if (size == 0) {
       factory = nothingFactory;
+    } else if (size > 1) {
+      logger.warn("detect more than one MetricFactory, will use {}", 
factory.getClass().getName());
     }
 
     ServiceLoader<MetricReporter> reporter = 
ServiceLoader.load(MetricReporter.class);
@@ -70,6 +68,7 @@ public class MetricService {
       reporters.add(r);
       r.setMetricFactory(factory);
       r.start();
+      logger.info("detect MetricReporter {}", r.getClass().getName());
     }
   }
 
diff --git 
a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
 
b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
index ca22f68..5eb65e4 100644
--- 
a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
+++ 
b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
@@ -34,6 +34,7 @@ import io.micrometer.prometheus.PrometheusConfig;
 import io.micrometer.prometheus.PrometheusMeterRegistry;
 
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 
 public class MicrometerMetricManager implements MetricManager {
@@ -43,6 +44,7 @@ public class MicrometerMetricManager implements MetricManager 
{
 
   public MicrometerMetricManager() {
     prometheusMeterRegistry = new 
PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
+    currentMeters = new ConcurrentHashMap<>();
   }
 
   public MeterRegistry getMeterRegistry() {
@@ -53,15 +55,22 @@ public class MicrometerMetricManager implements 
MetricManager {
   public Counter counter(String metric, String... tags) {
     io.micrometer.core.instrument.Counter innerCounter =
         prometheusMeterRegistry.counter(metric, tags);
-    IMetric counter = currentMeters.get(innerCounter.getId());
-    if (counter == null) {
-      counter = new MicrometerCounter(innerCounter);
-      currentMeters.put(innerCounter.getId(), counter);
-    }
-    return (Counter) counter;
+    return (Counter)
+        currentMeters.computeIfAbsent(
+            innerCounter.getId(), key -> new MicrometerCounter(innerCounter));
   }
 
   @Override
+  public void count(int delta, String metric, String... tags) {
+    io.micrometer.core.instrument.Counter innerCounter =
+        prometheusMeterRegistry.counter(metric, tags);
+    innerCounter.increment(delta);
+  }
+
+  @Override
+  public void count(long delta, String metric, String... tags) {}
+
+  @Override
   public Gauge gauge(String metric, String... tags) {
     return null;
   }
@@ -82,12 +91,6 @@ public class MicrometerMetricManager implements 
MetricManager {
   }
 
   @Override
-  public void count(int delta, String metric, String... tags) {}
-
-  @Override
-  public void count(long delta, String metric, String... tags) {}
-
-  @Override
   public void histogram(int value, String metric, String... tags) {}
 
   @Override

Reply via email to