shashank created CAMEL-26800:
--------------------------------

             Summary: camel-master - MasterConsumer gives up the leadership 
before its delegated consumer has stopped
                 Key: CAMEL-26800
                 URL: https://issues.apache.org/jira/browse/CAMEL-26800
             Project: Camel
          Issue Type: Bug
          Components: camel-master
            Reporter: shashank
            Assignee: shashank


*Leadership given up before the consumer stopped.* {{MasterConsumer.doStop}} 
removes its listener and releases the cluster view (which gives up the 
leadership) before it stops the delegated consumer. On every graceful stop of a 
leader (route stop, CamelContext shutdown, rolling restart), another node can 
take the leadership and start consuming while this node is still stopping its 
consumer (for example a JMS consumer that completes the messages it is 
processing). The {{master}} component is meant to have one active consumer in 
the cluster.

*The route is stopped before the delegated consumer.* {{doStop}} first stops 
the processor of the route ({{super.doStop()}}), so a delegated consumer that 
still routes messages while it stops (such as JMS, which completes the messages 
it is processing) sends them into a stopped route, where they fail.

*A failure to release the view leaves the consumer running.* There is no 
try/finally: when {{releaseView}} throws (for example the file lock cluster 
service when its data storage stalls), the delegated consumer is not stopped at 
all.

Expected: the leadership is released, and the route processor stopped, only 
after the delegated consumer stopped, and the delegated consumer is stopped 
also when releasing the view fails.

Suggested fix: in {{doStop}} stop the delegated consumer first, then the route 
processor, and release the view in a finally block.

Found with Specula (TLA+ model checked against traces of the real code) and 
code review, 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)

Reply via email to