[
https://issues.apache.org/jira/browse/CAMEL-26865?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-26865.
---------------------------------
Resolution: Fixed
Fixed by https://github.com/apache/camel/pull/29666 (merged to main for
4.24.0). _Claude Code on behalf of davsclaus_
> camel-cluster - ClusteredRoutePolicy: a route that fails to start when the
> node takes the leadership is never started again
> ---------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26865
> URL: https://issues.apache.org/jira/browse/CAMEL-26865
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Reporter: shashank
> Assignee: shashank
> Priority: Major
> Fix For: 4.24.0
>
>
> When the node takes the leadership, {{ClusteredRoutePolicy}} starts its
> routes in a loop inside one try block, after it has set its leader flag:
> * a route whose start fails (for example an endpoint that cannot connect yet
> at takeover) is only logged, and nothing tries again: the leadership is
> already taken, so only a later leadership change would start it. The node
> holds the leadership and does not run the route, and no other node runs it
> either;
> * the routes after it in the loop are not started at all.
> The stop on a leadership loss has the same single try block: a route that
> fails to stop keeps the routes after it running on a node that is no longer
> the leader, and stays recorded as started, so it is not started again when
> the node takes the leadership again.
> {{MasterRoutePolicy}} (CAMEL-26540) and the camel-zookeeper-master consumer
> (CAMEL-25315) retry a failed start while the node is the leader. A
> supervising route controller does not help here: it skips the routes that the
> policy has set to {{autoStartup=false}}.
> Expected: each route is started and stopped on its own; a route that fails to
> start is tried again while the node is the leader.
> Suggested fix: start and stop each route in its own try block; keep a route
> that failed to start with the stopped routes and start the stopped routes
> again after a delay while the node is the leader; record a route that is no
> longer running after a failed stop as stopped.
> Found with Specula (TLA+ model checked against traces of the real code) and
> confirmed with tests on the real classes.
> _Filed with Claude Code on behalf of allthingssecurity._
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)