@@ -48,87 +48,102 @@ public synchronized void registerThreadPool(IThreadPoolMBean pool, String name)
4848 notRegisteredPoolMap .put (name , pool );
4949 } else {
5050 registeredPoolMap .put (name , pool );
51- metricService .createAutoGauge (
52- SystemMetric .THREAD_POOL_ACTIVE_THREAD_COUNT .toString (),
53- MetricLevel .IMPORTANT ,
54- registeredPoolMap ,
55- map -> registeredPoolMap .get (name ).getActiveCount (),
56- SystemTag .POOL_NAME .toString (),
57- name );
58- metricService .createAutoGauge (
59- SystemMetric .THREAD_POOL_CORE_SIZE .toString (),
60- MetricLevel .IMPORTANT ,
61- registeredPoolMap ,
62- map -> registeredPoolMap .get (name ).getCorePoolSize (),
63- SystemTag .POOL_NAME .toString (),
64- name );
65- metricService .createAutoGauge (
66- SystemMetric .THREAD_POOL_WAITING_TASK_COUNT .toString (),
67- MetricLevel .IMPORTANT ,
68- registeredPoolMap ,
69- map -> registeredPoolMap .get (name ).getQueueLength (),
70- SystemTag .POOL_NAME .toString (),
71- name );
72- metricService .createAutoGauge (
73- SystemMetric .THREAD_POOL_DONE_TASK_COUNT .toString (),
74- MetricLevel .IMPORTANT ,
75- registeredPoolMap ,
76- map -> registeredPoolMap .get (name ).getCompletedTaskCount (),
77- SystemTag .POOL_NAME .toString (),
78- name );
79- metricService .createAutoGauge (
80- SystemMetric .THREAD_POOL_LARGEST_POOL_SIZE .toString (),
81- MetricLevel .IMPORTANT ,
82- registeredPoolMap ,
83- map -> registeredPoolMap .get (name ).getLargestPoolSize (),
84- SystemTag .POOL_NAME .toString (),
85- name );
51+ registerThreadPoolMetrics (name );
8652 }
8753 }
8854
55+ private void registerThreadPoolMetrics (String name ) {
56+ metricService .createAutoGauge (
57+ SystemMetric .THREAD_POOL_ACTIVE_THREAD_COUNT .toString (),
58+ MetricLevel .IMPORTANT ,
59+ registeredPoolMap ,
60+ map -> registeredPoolMap .get (name ).getActiveCount (),
61+ SystemTag .POOL_NAME .toString (),
62+ name );
63+ metricService .createAutoGauge (
64+ SystemMetric .THREAD_POOL_CORE_SIZE .toString (),
65+ MetricLevel .IMPORTANT ,
66+ registeredPoolMap ,
67+ map -> registeredPoolMap .get (name ).getCorePoolSize (),
68+ SystemTag .POOL_NAME .toString (),
69+ name );
70+ metricService .createAutoGauge (
71+ SystemMetric .THREAD_POOL_WAITING_TASK_COUNT .toString (),
72+ MetricLevel .IMPORTANT ,
73+ registeredPoolMap ,
74+ map -> registeredPoolMap .get (name ).getQueueLength (),
75+ SystemTag .POOL_NAME .toString (),
76+ name );
77+ metricService .createAutoGauge (
78+ SystemMetric .THREAD_POOL_DONE_TASK_COUNT .toString (),
79+ MetricLevel .IMPORTANT ,
80+ registeredPoolMap ,
81+ map -> registeredPoolMap .get (name ).getCompletedTaskCount (),
82+ SystemTag .POOL_NAME .toString (),
83+ name );
84+ metricService .createAutoGauge (
85+ SystemMetric .THREAD_POOL_LARGEST_POOL_SIZE .toString (),
86+ MetricLevel .IMPORTANT ,
87+ registeredPoolMap ,
88+ map -> registeredPoolMap .get (name ).getLargestPoolSize (),
89+ SystemTag .POOL_NAME .toString (),
90+ name );
91+ }
92+
8993 public synchronized void unRegisterThreadPool (String name ) {
9094 if (metricService == null ) {
9195 notRegisteredPoolMap .remove (name );
9296 } else {
9397 registeredPoolMap .remove (name );
94- metricService .remove (
95- MetricType .GAUGE ,
96- SystemMetric .THREAD_POOL_ACTIVE_THREAD_COUNT .toString (),
97- SystemTag .POOL_NAME .toString (),
98- name );
99- metricService .remove (
100- MetricType .GAUGE ,
101- SystemMetric .THREAD_POOL_CORE_SIZE .toString (),
102- SystemTag .POOL_NAME .toString (),
103- name );
104- metricService .remove (
105- MetricType .GAUGE ,
106- SystemMetric .THREAD_POOL_WAITING_TASK_COUNT .toString (),
107- SystemTag .POOL_NAME .toString (),
108- name );
109- metricService .remove (
110- MetricType .GAUGE ,
111- SystemMetric .THREAD_POOL_DONE_TASK_COUNT .toString (),
112- SystemTag .POOL_NAME .toString (),
113- name );
114- metricService .remove (
115- MetricType .GAUGE ,
116- SystemMetric .THREAD_POOL_LARGEST_POOL_SIZE .toString (),
117- SystemTag .POOL_NAME .toString (),
118- name );
98+ unRegisterThreadPoolMetrics (name );
11999 }
120100 }
121101
102+ private void unRegisterThreadPoolMetrics (String name ) {
103+ metricService .remove (
104+ MetricType .GAUGE ,
105+ SystemMetric .THREAD_POOL_ACTIVE_THREAD_COUNT .toString (),
106+ SystemTag .POOL_NAME .toString (),
107+ name );
108+ metricService .remove (
109+ MetricType .GAUGE ,
110+ SystemMetric .THREAD_POOL_CORE_SIZE .toString (),
111+ SystemTag .POOL_NAME .toString (),
112+ name );
113+ metricService .remove (
114+ MetricType .GAUGE ,
115+ SystemMetric .THREAD_POOL_WAITING_TASK_COUNT .toString (),
116+ SystemTag .POOL_NAME .toString (),
117+ name );
118+ metricService .remove (
119+ MetricType .GAUGE ,
120+ SystemMetric .THREAD_POOL_DONE_TASK_COUNT .toString (),
121+ SystemTag .POOL_NAME .toString (),
122+ name );
123+ metricService .remove (
124+ MetricType .GAUGE ,
125+ SystemMetric .THREAD_POOL_LARGEST_POOL_SIZE .toString (),
126+ SystemTag .POOL_NAME .toString (),
127+ name );
128+ }
129+
122130 @ Override
123131 public synchronized void bindTo (AbstractMetricService metricService ) {
124132 this .metricService = metricService ;
125- notRegisteredPoolMap .forEach ((name , pool ) -> registerThreadPool (pool , name ));
133+ for (Map .Entry <String , IThreadPoolMBean > entry : notRegisteredPoolMap .entrySet ()) {
134+ registerThreadPoolMetrics (entry .getKey ());
135+ }
136+ registeredPoolMap .putAll (notRegisteredPoolMap );
126137 notRegisteredPoolMap .clear ();
127138 }
128139
129140 @ Override
130141 public synchronized void unbindFrom (AbstractMetricService metricService ) {
131- registeredPoolMap .forEach ((name , pool ) -> unRegisterThreadPool (name ));
142+ for (Map .Entry <String , IThreadPoolMBean > entry : registeredPoolMap .entrySet ()) {
143+ unRegisterThreadPoolMetrics (entry .getKey ());
144+ }
145+ registeredPoolMap .clear ();
146+ notRegisteredPoolMap .clear ();
132147 }
133148
134149 private static class ThreadPoolMetricsHolder {
0 commit comments