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

Work on CAMEL-26288 started by shashank.
----------------------------------------
> camel-quickfix - removing one of the routes that consume from a quickfix 
> endpoint takes the other routes off the FIX session, so they silently receive 
> nothing
> --------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26288
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26288
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-quickfix
>            Reporter: shashank
>            Assignee: shashank
>            Priority: Major
>
> {{QuickfixjEndpoint}} supports multiple consumers (it delivers each FIX event 
> to all of them), and every route that consumes from the same {{quickfix:}} 
> uri shares the endpoint. When a route is removed, the core stops the endpoint 
> of its consumer ({{RouteService.doShutdown}}), also when other routes still 
> consume from it, and {{QuickfixjEndpoint.doStop}} clears the whole list of 
> consumers (main 36bebb520a63, lines 251-255). The consumers of the other 
> routes are still started, but no longer get any message, logon or other event 
> of the session; nothing is logged and nothing fails. Each consumer already 
> removes itself from the endpoint when it stops 
> ({{QuickfixjConsumer.doStop}}), so the {{clear()}} only affects consumers 
> that are still running.
> Example: two routes 
> {{from("quickfix:fix.cfg?sessionID=FIX.4.4:ACCEPTOR->INITIATOR")}} (one that 
> processes orders, one that records the session events); the second is removed 
> (a reload, a route template removed, JMX/controlbus): the first silently 
> stops receiving orders until it is restarted.
> *Fix*: remove {{QuickfixjEndpoint.doStop}}; the consumers take themselves off 
> the endpoint when they stop, as before, and the engine reference count is 
> unchanged.
> *Tests*: new {{QuickfixjRemoveRouteTest}} (acceptor and initiator sessions 
> over the in-JVM VM pipe transport, configured with 
> {{QuickfixjConfiguration}}): 
> {{removingOneOfTwoConsumerRoutesKeepsTheOtherReceiving}} fails on main (3 
> runs: {{mock://a Received message count. Expected: <1> but was: <0>}}); 
> {{stoppingOneOfTwoConsumerRoutesKeepsTheOtherReceiving}} (stop without 
> remove, the endpoint is not stopped) passes on main and with the fix, as a 
> control. With the fix camel-quickfix has 45 tests, 0 failures.
> *How it was found*: a code sweep for endpoints whose {{doStop}} releases 
> something the other routes on the same uri still use, after a random 
> lifecycle-sequence harness found the same kind of defect in camel-disruptor.
> *Affected*: main, camel-4.22.x, camel-4.18.x and camel-4.14.x (same 
> {{doStop}}; read, not run).
> _Filed with Claude Code on behalf of allthingssecurity._



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

Reply via email to