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
commit 6a3935ec41c6ebe60f6df1213fce33d88b3a44b3 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat Aug 29 11:08:29 2020 +0200 CAMEL-15481: camel-cluster - Should defer starting routes if quickly elected leading during startup --- .../apache/camel/impl/cluster/ClusteredRoutePolicy.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java b/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java index 1d9106c..547fff8 100644 --- a/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java +++ b/core/camel-cluster/src/main/java/org/apache/camel/impl/cluster/ClusteredRoutePolicy.java @@ -65,6 +65,7 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca private CamelClusterService clusterService; private CamelClusterView clusterView; private volatile boolean clusterViewAddListenerDone; + private volatile boolean startManagedRoutesEarly; private Duration initialDelay; private ScheduledExecutorService executorService; @@ -251,6 +252,13 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca } private void doStartManagedRoutes() { + // if we are currently starting up Camel context then defer starting routes till its fully started + if (camelContext.isStarting()) { + LOG.debug("Will defer starting managed routes until camel context is fully started"); + startManagedRoutesEarly = true; + return; + } + if (!isRunAllowed()) { return; } @@ -318,6 +326,13 @@ public final class ClusteredRoutePolicy extends RoutePolicySupport implements Ca // cluster view is not initialized yet, so lets add its listener in doStart clusterViewAddListenerDone = false; } + + if (startManagedRoutesEarly) { + LOG.debug( + "CamelContext is now fully started, can now start managed routes eager as we were appointed leader during early startup"); + startManagedRoutesEarly = false; + startManagedRoutes(); + } } // ****************************************************