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

tanxinyu pushed a commit to branch fix_threadpool_metric_npe_cp
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit b0923b168a7c8abbe629fb303764bf1a12a3287e
Author: OneSizeFitQuorum <[email protected]>
AuthorDate: Tue Dec 17 10:26:25 2024 +0800

    fix npe
    
    Signed-off-by: OneSizeFitQuorum <[email protected]>
---
 .../commons/concurrent/ThreadPoolMetrics.java      | 26 +++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/ThreadPoolMetrics.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/ThreadPoolMetrics.java
index a05742e38d3..0523daf05a0 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/ThreadPoolMetrics.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/ThreadPoolMetrics.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.metrics.utils.SystemTag;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 
 @SuppressWarnings("java:S6548")
 public class ThreadPoolMetrics implements IMetricSet {
@@ -57,35 +58,50 @@ public class ThreadPoolMetrics implements IMetricSet {
         SystemMetric.THREAD_POOL_ACTIVE_THREAD_COUNT.toString(),
         MetricLevel.IMPORTANT,
         registeredPoolMap,
-        map -> registeredPoolMap.get(name).getActiveCount(),
+        map ->
+            Optional.ofNullable(registeredPoolMap.get(name))
+                .map(IThreadPoolMBean::getActiveCount)
+                .orElse(0),
         SystemTag.POOL_NAME.toString(),
         name);
     metricService.createAutoGauge(
         SystemMetric.THREAD_POOL_CORE_SIZE.toString(),
         MetricLevel.IMPORTANT,
         registeredPoolMap,
-        map -> registeredPoolMap.get(name).getCorePoolSize(),
+        map ->
+            Optional.ofNullable(registeredPoolMap.get(name))
+                .map(IThreadPoolMBean::getCorePoolSize)
+                .orElse(0),
         SystemTag.POOL_NAME.toString(),
         name);
     metricService.createAutoGauge(
         SystemMetric.THREAD_POOL_WAITING_TASK_COUNT.toString(),
         MetricLevel.IMPORTANT,
         registeredPoolMap,
-        map -> registeredPoolMap.get(name).getQueueLength(),
+        map ->
+            Optional.ofNullable(registeredPoolMap.get(name))
+                .map(IThreadPoolMBean::getQueueLength)
+                .orElse(0),
         SystemTag.POOL_NAME.toString(),
         name);
     metricService.createAutoGauge(
         SystemMetric.THREAD_POOL_DONE_TASK_COUNT.toString(),
         MetricLevel.IMPORTANT,
         registeredPoolMap,
-        map -> registeredPoolMap.get(name).getCompletedTaskCount(),
+        map ->
+            Optional.ofNullable(registeredPoolMap.get(name))
+                .map(IThreadPoolMBean::getCompletedTaskCount)
+                .orElse(0L),
         SystemTag.POOL_NAME.toString(),
         name);
     metricService.createAutoGauge(
         SystemMetric.THREAD_POOL_LARGEST_POOL_SIZE.toString(),
         MetricLevel.IMPORTANT,
         registeredPoolMap,
-        map -> registeredPoolMap.get(name).getLargestPoolSize(),
+        map ->
+            Optional.ofNullable(registeredPoolMap.get(name))
+                .map(IThreadPoolMBean::getLargestPoolSize)
+                .orElse(0),
         SystemTag.POOL_NAME.toString(),
         name);
   }

Reply via email to