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)

Reply via email to