You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ro...@apache.org on 2022/05/14 08:43:35 UTC

[iotdb] branch rel/0.13 updated: [IOTDB-3158][metric] fix NPE exception (#5891) (#5907)

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

rong pushed a commit to branch rel/0.13
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/0.13 by this push:
     new fe68d84413 [IOTDB-3158][metric] fix NPE exception (#5891) (#5907)
fe68d84413 is described below

commit fe68d844133ef622433632a68551166887971974
Author: ZhangHongYin <46...@users.noreply.github.com>
AuthorDate: Sat May 14 16:43:31 2022 +0800

    [IOTDB-3158][metric] fix NPE exception (#5891) (#5907)
    
    (cherry picked from commit fe253ffdfdb94aec990472f99dc9ae20540ab859)
---
 .../metrics/dropwizard/reporter/IoTDBReporter.java | 15 +++++
 .../micrometer/reporter/IoTDBMeterRegistry.java    | 66 +++++++++++-----------
 2 files changed, 49 insertions(+), 32 deletions(-)

diff --git a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/IoTDBReporter.java b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/IoTDBReporter.java
index f9b08dd2ff..06693b7491 100644
--- a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/IoTDBReporter.java
+++ b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/IoTDBReporter.java
@@ -165,6 +165,9 @@ public class IoTDBReporter extends ScheduledReporter {
   }
 
   private void sendGauge(String name, Gauge gauge) {
+    if (null == gauge) {
+      return;
+    }
     MetricName metricName = new MetricName(name);
     Object obj = gauge.getValue();
     double value;
@@ -177,12 +180,18 @@ public class IoTDBReporter extends ScheduledReporter {
   }
 
   private void sendCounter(String name, Counter counter) {
+    if (null == counter) {
+      return;
+    }
     MetricName metricName = new MetricName(name);
     double value = counter.getCount();
     updateValue(prefixed(metricName.getName()), metricName.getTags(), value);
   }
 
   private void sendHistogram(String name, Histogram histogram) {
+    if (null == histogram) {
+      return;
+    }
     MetricName metricName = new MetricName(name);
     writeSnapshotAndCount(
         prefixed(metricName.getName()),
@@ -193,12 +202,18 @@ public class IoTDBReporter extends ScheduledReporter {
   }
 
   private void sendMeter(String name, Meter meter) {
+    if (null == meter) {
+      return;
+    }
     MetricName metricName = new MetricName(name);
     double value = meter.getCount();
     updateValue(prefixed(metricName.getName()), metricName.getTags(), value);
   }
 
   private void sendTimer(String name, Timer timer) {
+    if (null == timer) {
+      return;
+    }
     MetricName metricName = new MetricName(name);
     writeSnapshotAndCount(
         prefixed(metricName.getName()),
diff --git a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/IoTDBMeterRegistry.java b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/IoTDBMeterRegistry.java
index 979919cfeb..9ec5a3816f 100644
--- a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/IoTDBMeterRegistry.java
+++ b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/IoTDBMeterRegistry.java
@@ -88,38 +88,40 @@ public class IoTDBMeterRegistry extends StepMeterRegistry {
     getMeters()
         .forEach(
             meter -> {
-              Meter.Id id = meter.getId();
-              String name = id.getName();
-              List<Tag> tags = id.getTags();
-              Map<String, String> labels = tagsConvertToMap(tags);
-              meter.use(
-                  gauge -> {
-                    updateValue(name, labels, gauge.value(), time);
-                  },
-                  counter -> {
-                    updateValue(name, labels, counter.count(), time);
-                  },
-                  timer -> {
-                    writeSnapshotAndCount(name, labels, timer.takeSnapshot(), time);
-                  },
-                  summary -> {
-                    writeSnapshotAndCount(name, labels, summary.takeSnapshot(), time);
-                  },
-                  longTaskTimer -> {
-                    updateValue(name, labels, (double) longTaskTimer.activeTasks(), time);
-                  },
-                  timeGauge -> {
-                    updateValue(name, labels, timeGauge.value(getBaseTimeUnit()), time);
-                  },
-                  functionCounter -> {
-                    updateValue(name, labels, functionCounter.count(), time);
-                  },
-                  functionTimer -> {
-                    updateValue(name, labels, functionTimer.count(), time);
-                  },
-                  m -> {
-                    logger.debug("unknown meter:" + meter);
-                  });
+              if (null != meter) {
+                Meter.Id id = meter.getId();
+                String name = id.getName();
+                List<Tag> tags = id.getTags();
+                Map<String, String> labels = tagsConvertToMap(tags);
+                meter.use(
+                    gauge -> {
+                      updateValue(name, labels, gauge.value(), time);
+                    },
+                    counter -> {
+                      updateValue(name, labels, counter.count(), time);
+                    },
+                    timer -> {
+                      writeSnapshotAndCount(name, labels, timer.takeSnapshot(), time);
+                    },
+                    summary -> {
+                      writeSnapshotAndCount(name, labels, summary.takeSnapshot(), time);
+                    },
+                    longTaskTimer -> {
+                      updateValue(name, labels, (double) longTaskTimer.activeTasks(), time);
+                    },
+                    timeGauge -> {
+                      updateValue(name, labels, timeGauge.value(getBaseTimeUnit()), time);
+                    },
+                    functionCounter -> {
+                      updateValue(name, labels, functionCounter.count(), time);
+                    },
+                    functionTimer -> {
+                      updateValue(name, labels, functionTimer.count(), time);
+                    },
+                    m -> {
+                      logger.debug("unknown meter:" + meter);
+                    });
+              }
             });
   }