This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 677e434  CAMEL-14719: camel-core - Camel context started events should 
be emitted after its status is started. Also fix clustered route policy to only 
start routes after camel has been started up.
677e434 is described below

commit 677e434e2de3b3cf349476fbfa93c29075429867
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sun Mar 15 10:01:54 2020 +0100

    CAMEL-14719: camel-core - Camel context started events should be emitted 
after its status is started. Also fix clustered route policy to only start 
routes after camel has been started up.
---
 .../ConsulClusteredRoutePolicyFactoryTest.java     |  4 ++-
 .../camel/impl/engine/AbstractCamelContext.java    | 35 ++++++++++++----------
 .../apache/camel/cluster/ClusteredRoutePolicy.java |  9 ++++--
 3 files changed, 30 insertions(+), 18 deletions(-)

diff --git 
a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java
 
b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java
index e549ff4..2a22429 100644
--- 
a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java
+++ 
b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java
@@ -98,11 +98,13 @@ public class ConsulClusteredRoutePolicyFactoryTest {
             // Start the context after some random time so the startup order
             // changes for each test.
             Thread.sleep(ThreadLocalRandom.current().nextInt(500));
+            LOGGER.info("Starting CamelContext on node: {}", id);
             context.start();
+            LOGGER.info("Started CamelContext on node: {}", id);
 
             contextLatch.await();
 
-            LOGGER.debug("Shutting down node {}", id);
+            LOGGER.info("Shutting down node {}", id);
             RESULTS.add(id);
 
             context.stop();
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index c8acf1b..82f9b0b 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -2483,6 +2483,26 @@ public abstract class AbstractCamelContext extends 
BaseService
     }
 
     @Override
+    public void start() {
+        super.start();
+
+        // okay the routes has been started so emit event that CamelContext
+        // has started (here at the end)
+        EventHelper.notifyCamelContextStarted(this);
+
+        // now call the startup listeners where the routes has been started
+        for (StartupListener startup : startupListeners) {
+            if (startup instanceof ExtendedStartupListener) {
+                try {
+                    
((ExtendedStartupListener)startup).onCamelContextFullyStarted(this, 
isStarted());
+                } catch (Exception e) {
+                    throw RuntimeCamelException.wrapRuntimeException(e);
+                }
+            }
+        }
+    }
+
+    @Override
     protected synchronized void doStart() throws Exception {
         try {
             doStartContext();
@@ -2576,21 +2596,6 @@ public abstract class AbstractCamelContext extends 
BaseService
             }
             LOG.info("Apache Camel {} (CamelContext: {}) started in {}", 
getVersion(), getName(), TimeUtils.printDuration(stopWatch.taken()));
         }
-
-        // okay the routes has been started so emit event that CamelContext
-        // has started (here at the end)
-        EventHelper.notifyCamelContextStarted(this);
-
-        // now call the startup listeners where the routes has been started
-        for (StartupListener startup : startupListeners) {
-            if (startup instanceof ExtendedStartupListener) {
-                try {
-                    
((ExtendedStartupListener)startup).onCamelContextFullyStarted(this, 
isStarted());
-                } catch (Exception e) {
-                    throw RuntimeCamelException.wrapRuntimeException(e);
-                }
-            }
-        }
     }
 
     protected void doStartCamel() throws Exception {
diff --git 
a/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRoutePolicy.java
 
b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRoutePolicy.java
index c4e976a..10d7cd8 100644
--- 
a/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRoutePolicy.java
+++ 
b/core/camel-core-engine/src/main/java/org/apache/camel/cluster/ClusteredRoutePolicy.java
@@ -27,9 +27,9 @@ import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
+import org.apache.camel.ExtendedStartupListener;
 import org.apache.camel.Route;
 import org.apache.camel.ServiceStatus;
-import org.apache.camel.StartupListener;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.spi.CamelEvent;
@@ -297,7 +297,7 @@ public final class ClusteredRoutePolicy extends 
RoutePolicySupport implements Ca
         }
     }
 
-    private class CamelContextStartupListener extends EventNotifierSupport 
implements StartupListener {
+    private class CamelContextStartupListener extends EventNotifierSupport 
implements ExtendedStartupListener {
         @Override
         public void notify(CamelEvent event) throws Exception {
             onCamelContextStarted();
@@ -310,6 +310,11 @@ public final class ClusteredRoutePolicy extends 
RoutePolicySupport implements Ca
 
         @Override
         public void onCamelContextStarted(CamelContext context, boolean 
alreadyStarted) throws Exception {
+            // noop
+        }
+
+        @Override
+        public void onCamelContextFullyStarted(CamelContext context, boolean 
alreadyStarted) throws Exception {
             if (alreadyStarted) {
                 // Invoke it only if the context was already started as this
                 // method is not invoked at last event as documented but after

Reply via email to