shashank created CAMEL-26802:
--------------------------------
Summary: camel-zookeeper-master - MasterRoutePolicy keeps the
mastership after its route is removed, and does not keep the route of a slave
stopped on start or resume
Key: CAMEL-26802
URL: https://issues.apache.org/jira/browse/CAMEL-26802
Project: Camel
Issue Type: Bug
Components: camel-zookeeper-master
Reporter: shashank
Assignee: shashank
{{MasterRoutePolicy}} joins the ZooKeeper group in {{doStart}} and leaves it in
{{doStop}}. The policy is added to the CamelContext as a service, so it only
stops when the CamelContext stops. It does not override {{onRemove}},
{{onStart}}, {{onSuspend}} or {{onResume}}.
*A removed route keeps the mastership.* When the route is removed on the master
(with {{removeRoute}}, or a route reload, which removes the route and adds it
again), the policy stays in the group and stays the master, so no other node
starts the route: it runs nowhere in the cluster. A reload with a new policy
instance joins the group as a slave next to the old instance, which is still
the master. On a slave, the policy of a removed route also stays in the group,
and when it is elected later it starts the consumer of the removed route
({{route}} still points at it).
*The route of a slave is kept stopped only by autoStartup=false.* The
documentation asks for {{noAutoStartup()}}, as the policy starts the consumer
when the node is elected. A {{startRoute}} or {{resumeRoute}} on a slave (from
JMX, the controlbus, a scheduled route policy; {{resumeRoute}} starts a stopped
route whose consumer does not support suspension) starts its consumer, and
nothing stops it again, so the slave consumes next to the master.
Expected: a removed route gives up the mastership (leaves the group), and a
policy that gets a route again joins it again; a route of a slave that is
started or resumed keeps its consumer stopped until the node is elected.
The same gaps were fixed in {{HazelcastRoutePolicy}} with CAMEL-26784, which
can serve as a reference.
Found while reviewing CAMEL-26784, from reading the code on main; the onRemove
case follows from the policy being a CamelContext service, the start/resume
case is to be confirmed with a test.
_Filed with Claude Code on behalf of allthingssecurity._
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)