Cleaning-up shared executors use of metrics service.
Change-Id: I4293df87cd46e9f22cbdf03cfbced9a21ba85de7
Showing
3 changed files
with
30 additions
and
17 deletions
| ... | @@ -101,7 +101,7 @@ public class CoreManager implements CoreService { | ... | @@ -101,7 +101,7 @@ public class CoreManager implements CoreService { |
| 101 | 101 | ||
| 102 | 102 | ||
| 103 | @Activate | 103 | @Activate |
| 104 | - public void activate() { | 104 | + protected void activate() { |
| 105 | registerApplication(CORE_APP_NAME); | 105 | registerApplication(CORE_APP_NAME); |
| 106 | cfgService.registerProperties(getClass()); | 106 | cfgService.registerProperties(getClass()); |
| 107 | try { | 107 | try { |
| ... | @@ -117,7 +117,7 @@ public class CoreManager implements CoreService { | ... | @@ -117,7 +117,7 @@ public class CoreManager implements CoreService { |
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | @Deactivate | 119 | @Deactivate |
| 120 | - public void deactivate() { | 120 | + protected void deactivate() { |
| 121 | cfgService.unregisterProperties(getClass(), false); | 121 | cfgService.unregisterProperties(getClass(), false); |
| 122 | SharedExecutors.shutdown(); | 122 | SharedExecutors.shutdown(); |
| 123 | } | 123 | } |
| ... | @@ -171,7 +171,7 @@ public class CoreManager implements CoreService { | ... | @@ -171,7 +171,7 @@ public class CoreManager implements CoreService { |
| 171 | 171 | ||
| 172 | 172 | ||
| 173 | @Modified | 173 | @Modified |
| 174 | - public void modified(ComponentContext context) { | 174 | + protected void modified(ComponentContext context) { |
| 175 | Dictionary<?, ?> properties = context.getProperties(); | 175 | Dictionary<?, ?> properties = context.getProperties(); |
| 176 | Integer poolSize = Tools.getIntegerProperty(properties, "sharedThreadPoolSize"); | 176 | Integer poolSize = Tools.getIntegerProperty(properties, "sharedThreadPoolSize"); |
| 177 | 177 | ||
| ... | @@ -193,7 +193,7 @@ public class CoreManager implements CoreService { | ... | @@ -193,7 +193,7 @@ public class CoreManager implements CoreService { |
| 193 | Boolean performanceCheck = Tools.isPropertyEnabled(properties, "sharedThreadPerformanceCheck"); | 193 | Boolean performanceCheck = Tools.isPropertyEnabled(properties, "sharedThreadPerformanceCheck"); |
| 194 | if (performanceCheck != null) { | 194 | if (performanceCheck != null) { |
| 195 | calculatePoolPerformance = performanceCheck; | 195 | calculatePoolPerformance = performanceCheck; |
| 196 | - SharedExecutors.setCalculatePoolPerformance(calculatePoolPerformance, metricsService); | 196 | + SharedExecutors.setMetricsService(calculatePoolPerformance ? metricsService : null); |
| 197 | } | 197 | } |
| 198 | 198 | ||
| 199 | log.info("Settings: sharedThreadPoolSize={}, maxEventTimeLimit={}, calculatePoolPerformance={}", | 199 | log.info("Settings: sharedThreadPoolSize={}, maxEventTimeLimit={}, calculatePoolPerformance={}", | ... | ... |
| ... | @@ -134,8 +134,7 @@ class SharedExecutorService implements ExecutorService { | ... | @@ -134,8 +134,7 @@ class SharedExecutorService implements ExecutorService { |
| 134 | delayMetrics.update(taskwaittime, TimeUnit.SECONDS); | 134 | delayMetrics.update(taskwaittime, TimeUnit.SECONDS); |
| 135 | } | 135 | } |
| 136 | return t; | 136 | return t; |
| 137 | - } | 137 | + }); |
| 138 | - ); | ||
| 139 | } | 138 | } |
| 140 | 139 | ||
| 141 | @Override | 140 | @Override |
| ... | @@ -179,20 +178,26 @@ class SharedExecutorService implements ExecutorService { | ... | @@ -179,20 +178,26 @@ class SharedExecutorService implements ExecutorService { |
| 179 | executor.execute(command); | 178 | executor.execute(command); |
| 180 | } | 179 | } |
| 181 | 180 | ||
| 182 | - public void setCalculatePoolPerformance(boolean calculatePoolPerformance, MetricsService metricsSrv) { | 181 | + /** |
| 183 | - this.metricsService = metricsSrv; | 182 | + * Enables or disables calculation of the pool performance metrics. If |
| 184 | - if (calculatePoolPerformance) { | 183 | + * the metrics service is not null metric collection will be enabled; |
| 185 | - if (metricsService != null) { | 184 | + * otherwise it will be disabled. |
| 185 | + * | ||
| 186 | + * @param metricsService optional metric service | ||
| 187 | + */ | ||
| 188 | + public void setMetricsService(MetricsService metricsService) { | ||
| 189 | + if (this.metricsService == null && metricsService != null) { | ||
| 190 | + // If metrics service was newly introduced, initialize metrics. | ||
| 186 | executorMetrics = metricsService.registerComponent("SharedExecutor"); | 191 | executorMetrics = metricsService.registerComponent("SharedExecutor"); |
| 187 | MetricsFeature mf = executorMetrics.registerFeature("*"); | 192 | MetricsFeature mf = executorMetrics.registerFeature("*"); |
| 188 | queueMetrics = metricsService.createTimer(executorMetrics, mf, "Queue"); | 193 | queueMetrics = metricsService.createTimer(executorMetrics, mf, "Queue"); |
| 189 | delayMetrics = metricsService.createTimer(executorMetrics, mf, "Delay"); | 194 | delayMetrics = metricsService.createTimer(executorMetrics, mf, "Delay"); |
| 190 | - } | 195 | + } else if (this.metricsService != null && metricsService == null) { |
| 191 | - } else { | 196 | + // If the metrics service was newly withdrawn, tear-down metrics. |
| 192 | - metricsService = null; | ||
| 193 | queueMetrics = null; | 197 | queueMetrics = null; |
| 194 | delayMetrics = null; | 198 | delayMetrics = null; |
| 195 | - } | 199 | + } // Otherwise just record the metrics service |
| 200 | + this.metricsService = metricsService; | ||
| 196 | } | 201 | } |
| 197 | 202 | ||
| 198 | private Runnable wrap(Runnable command) { | 203 | private Runnable wrap(Runnable command) { |
| ... | @@ -232,11 +237,13 @@ class SharedExecutorService implements ExecutorService { | ... | @@ -232,11 +237,13 @@ class SharedExecutorService implements ExecutorService { |
| 232 | 237 | ||
| 233 | /** | 238 | /** |
| 234 | * Wrapper for Callable object . | 239 | * Wrapper for Callable object . |
| 240 | + * | ||
| 235 | * @param runnable Runnable object | 241 | * @param runnable Runnable object |
| 236 | */ | 242 | */ |
| 237 | public CallableExtended(Runnable runnable) { | 243 | public CallableExtended(Runnable runnable) { |
| 238 | this.runnable = runnable; | 244 | this.runnable = runnable; |
| 239 | } | 245 | } |
| 246 | + | ||
| 240 | public Runnable getRunnable() { | 247 | public Runnable getRunnable() { |
| 241 | return runnable; | 248 | return runnable; |
| 242 | } | 249 | } | ... | ... |
| ... | @@ -95,9 +95,15 @@ public final class SharedExecutors { | ... | @@ -95,9 +95,15 @@ public final class SharedExecutors { |
| 95 | "onos-pool-executor-%d"))); | 95 | "onos-pool-executor-%d"))); |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | - | 98 | + /** |
| 99 | - public static void setCalculatePoolPerformance(boolean calculatePoolPerformance, MetricsService metricsService) { | 99 | + * Enables or disables calculation of the pool performance metrics. If |
| 100 | - poolThreadExecutor.setCalculatePoolPerformance(calculatePoolPerformance, metricsService); | 100 | + * the metrics service is not null metric collection will be enabled; |
| 101 | + * otherwise it will be disabled. | ||
| 102 | + * | ||
| 103 | + * @param metricsService optional metric service | ||
| 104 | + */ | ||
| 105 | + public static void setMetricsService(MetricsService metricsService) { | ||
| 106 | + poolThreadExecutor.setMetricsService(metricsService); | ||
| 101 | } | 107 | } |
| 102 | 108 | ||
| 103 | /** | 109 | /** | ... | ... |
-
Please register or login to post a comment