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


Reply via email to