Author: davsclaus Date: Mon Jul 16 11:26:49 2012 New Revision: 1361975 URL: http://svn.apache.org/viewvc?rev=1361975&view=rev Log: CAMEL-5445: TimerManagerLoadTask thread name is now using the same name pattern as all the other threads. Have to defer starting it until CamelContext fully started.
Modified: camel/branches/camel-2.10.x/ (props changed) camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java Propchange: camel/branches/camel-2.10.x/ ------------------------------------------------------------------------------ Merged /camel/trunk:r1361973 Propchange: camel/branches/camel-2.10.x/ ------------------------------------------------------------------------------ --- svnmerge-integrated (original) +++ svnmerge-integrated Mon Jul 16 11:26:49 2012 @@ -1 +1 @@ -/camel/trunk:1-1358964,1359013,1359197,1359226,1359265,1359341,1359383,1360031,1360241,1360339,1360525-1360527,1360581,1360583,1360719,1361116-1361117,1361477,1361919 +/camel/trunk:1-1358964,1359013,1359197,1359226,1359265,1359341,1359383,1360031,1360241,1360339,1360525-1360527,1360581,1360583,1360719,1361116-1361117,1361477,1361919,1361973 Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java?rev=1361975&r1=1361974&r2=1361975&view=diff ============================================================================== --- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java (original) +++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java Mon Jul 16 11:26:49 2012 @@ -42,6 +42,7 @@ import org.apache.camel.Processor; import org.apache.camel.Producer; import org.apache.camel.Route; import org.apache.camel.Service; +import org.apache.camel.StartupListener; import org.apache.camel.TimerListener; import org.apache.camel.VetoCamelContextStartException; import org.apache.camel.api.management.PerformanceCounter; @@ -105,6 +106,7 @@ public class DefaultManagementLifecycleS new HashMap<Processor, KeyValueHolder<ProcessorDefinition<?>, InstrumentationProcessor>>(); private final List<PreRegisterService> preServices = new ArrayList<PreRegisterService>(); private final TimerListenerManager timerListenerManager = new TimerListenerManager(); + private final TimerListenerManagerStartupListener timerManagerStartupListener = new TimerListenerManagerStartupListener(); private volatile CamelContext camelContext; private volatile ManagedCamelContext camelContextMBean; private volatile boolean initialized; @@ -844,14 +846,24 @@ public class DefaultManagementLifecycleS protected void doStart() throws Exception { ObjectHelper.notNull(camelContext, "CamelContext"); - boolean enabled = camelContext.getManagementStrategy().getStatisticsLevel() != ManagementStatisticsLevel.Off; - if (enabled) { - LOG.info("StatisticsLevel at {} so enabling load performance statistics", camelContext.getManagementStrategy().getStatisticsLevel()); - ScheduledExecutorService executorService = camelContext.getExecutorServiceManager().newSingleThreadScheduledExecutor(this, "ManagementLoadTask"); - timerListenerManager.setExecutorService(executorService); - // must use 1 sec interval as the load statistics is based on 1 sec calculations - timerListenerManager.setInterval(1000); - ServiceHelper.startService(timerListenerManager); + // defer starting the timer manager until CamelContext has been fully started + camelContext.addStartupListener(timerManagerStartupListener); + } + + private final class TimerListenerManagerStartupListener implements StartupListener { + + @Override + public void onCamelContextStarted(CamelContext context, boolean alreadyStarted) throws Exception { + boolean enabled = camelContext.getManagementStrategy().getStatisticsLevel() != ManagementStatisticsLevel.Off; + if (enabled) { + LOG.info("StatisticsLevel at {} so enabling load performance statistics", camelContext.getManagementStrategy().getStatisticsLevel()); + // we have to defer creating this until CamelContext has been started + ScheduledExecutorService executorService = camelContext.getExecutorServiceManager().newSingleThreadScheduledExecutor(this, "ManagementLoadTask"); + timerListenerManager.setExecutorService(executorService); + // must use 1 sec interval as the load statistics is based on 1 sec calculations + timerListenerManager.setInterval(1000); + ServiceHelper.startService(timerListenerManager); + } } }