This is an automated email from the ASF dual-hosted git repository.
tanxinyu pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/dev/1.3 by this push:
new c01baa0ea69 [To dev/1.3] Fix ThreadPool Metric NPE #14460
c01baa0ea69 is described below
commit c01baa0ea69bff37755d28687d41ffdfb45321b9
Author: Potato <[email protected]>
AuthorDate: Tue Dec 17 12:30:37 2024 +0800
[To dev/1.3] Fix ThreadPool Metric NPE #14460
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);
}