[ 
https://issues.apache.org/jira/browse/CAMEL-26602?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen resolved CAMEL-26602.
---------------------------------
    Resolution: Fixed

Fixed by https://github.com/apache/camel/pull/29366 (merged on main for 4.24.0).

_Claude Code on behalf of davsclaus_

> camel-core - suspendRoute on a stopped route marks it Suspended, and a later 
> startRoute or resumeRoute reports it Started without starting its consumer
> -------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26602
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26602
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>            Reporter: shashank
>            Assignee: shashank
>            Priority: Major
>             Fix For: 4.24.0
>
>
> Found with Fray (controlled concurrency testing for the JVM): a test that 
> runs {{stopRoute}}, {{suspendRoute}} and {{startRoute}} of the same seda 
> route on three threads failed in the order stop, suspend, start: the route 
> reported {{Started}}, but its consumer was stopped and not registered on the 
> endpoint. The order alone is enough, no race is needed.
> {{AbstractCamelContext.suspendRoute}} suspends the route service without 
> checking that the route is started, and {{BaseService.suspend()}} moves any 
> status (also {{Stopped}}) to {{Suspended}}. So:
> {code:java}
> controller.stopRoute("foo");     // route and consumer stopped
> controller.suspendRoute("foo");  // status is now Suspended
> controller.startRoute("foo");    // startRouteService sees a suspended route 
> service and resumes it
> // status is Started, but the consumer was never started: messages to the 
> route are not consumed
> {code}
> {{resumeRoute}} behaves the same, and a route with {{autoStartup=false}} that 
> is suspended before it was ever started ends the same way.
> Ways to get there: the dev console, JMX 
> ({{ManagedSuspendableRoute.suspend}}), the control bus, a route policy 
> ({{RoutePolicySupport.suspendRoute}}), and the Camel CLI, whose {{suspend}} 
> of all routes calls {{suspendRoute}} for every route, also the stopped ones 
> (then {{resume}} of all routes reports them all Started). A route policy or 
> an operator that stops a route while another one suspends it also ends there.
> The CamelContext suspend already only suspends the started routes 
> ({{doSuspend}}: "we only want to suspend started routes").
> Expected: suspending a route that is not started leaves it stopped, so a 
> later start or resume starts its consumer.
> Suggested fix: {{suspendRoute}} does nothing (DEBUG log) when the route 
> service is not started.
> _Filed with Claude Code on behalf of allthingssecurity._



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to