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); }
