Conversation
|
🌟 Thank you for your contribution to the Apache Camel project! 🌟 🐫 Apache Camel Committers, please review the following items:
|
gnodet-bot
left a comment
There was a problem hiding this comment.
Clean fix. The session capture before routing is the right approach — minimal change, preserves the CAMEL-5979 intent, and the test directly proves the regression. Doc correction (header → exchange property) is accurate.
Milestone 4.23.0 is not set.
This review was generated by an AI agent, Hermès on behalf of @gnodet.
|
🧪 CI tested the following changed modules:
🔬 Scalpel shadow comparison — Scalpel: 9 of 695 tested, 25 compile-only — current: 9 all testedMaveniverse Scalpel detected 9 affected modules (current approach: 9). Skip-tests mode would test 9 modules (3 direct + 8 downstream), skip tests for 25 (generated code, meta-modules) Modules Scalpel would test (9)
Modules with tests skipped (25)
All tested modules (36 modules, 5m 30s total)Total reactor time: 5m 30s
Top 20 slowest modules:
|
davsclaus
left a comment
There was a problem hiding this comment.
Thanks @oscerd, this looks good. Capturing the SessionID before routing, and keeping it in a local variable rather than an exchange property as the JIRA first suggested, means nothing in the route can redirect the reply. It still keeps the CAMEL-5979 intent of using the engine's own SessionID rather than one rebuilt from CompIDs. I checked the DataDictionary docs fix against QuickfixjConverters.getDataDictionary() and it is accurate: property first (instance or resource name), then the session's dictionary. The new tests follow the module's existing Hamcrest style, and bringing back a consumer test after CAMEL-16222 is a nice bonus. The upgrade-guide note is clear.
This review was generated by an AI agent on behalf of davsclaus and may contain inaccuracies. Please verify all suggestions before applying.
|
Thanks @oscerd, this is approved and ready, but it now conflicts with main in Claude Code on behalf of davsclaus |
🔄 Backport BotThis bugfix targets
Add a Backport PRs will be created automatically on merge (once a port label is added). Comment ℹ️ If you push additional commits after |
|
@oscerd LGTM and ready to merge, but it now conflicts in Claude Code on behalf of davsclaus |
cf80b83 to
d2617dc
Compare
gnodet-bot
left a comment
There was a problem hiding this comment.
Rebase is clean — diff is identical to the previously approved version, upgrade-guide conflict resolved. CI pending on the new commit.
This review was generated by an AI agent, Hermès on behalf of @gnodet.
…equest arrived on The InOut consumer read the SessionID header after routing to choose the session for the reply, so a route that changed the header also changed where the reply went. Capture the session before routing instead. It is still the engine's own SessionID, as introduced by CAMEL-5979. Also correct the docs, which called the DataDictionary exchange property a header, and add an upgrade-guide note. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: Andrea Cosentino <ancosen@gmail.com>
d2617dc to
8554a83
Compare
Summary
CAMEL-25019
With
exchangePattern=InOut,QuickfixjConsumerchose the session for the reply by reading theSessionIDheader when the route completed. Any step in the route that set or replaced that header therefore changed which session received the reply. The consumer now captures the session the request arrived on before it hands the exchange to the route, and sends the reply there.This keeps the intent of CAMEL-5979. That change stopped rebuilding the reply's session ID from the message's CompID fields and used the engine's own
SessionIDinstead, so replies still find the session when SenderSubID/TargetSubID vary. The value used here is the same one the consumer puts in the header; it is now read before routing instead of after.Changes
QuickfixjConsumer: read theSessionIDbefore processing and pass it tosendOutMessage, instead of reading the header again afterwards. No public API change.QuickfixjConsumerTest(new): the reply goes to the originating session, including when the route changes theSessionIDheader. The component has had no consumer test sinceQuickfixjConsumerTestwas removed in CAMEL-16222.quickfix-component.adoc: the Usage section calledDataDictionarya header, butQuickfixjConvertersreads it from an exchange property; the wording is corrected. The InOut consumer section now says which session receives the reply.Testing
components/camel-quickfix: all 43 tests pass. The newreplyIgnoresSessionIdHeaderChangedDuringRoutingfails without the fix.mvn clean install -DskipTests -DskipITs: BUILD SUCCESS. The only regenerated file is the catalog copy ofquickfix-component.adoc, which is included.Backports to
camel-4.22.xandcamel-4.18.xwill follow once this is merged.Claude Code on behalf of oscerd
🤖 Generated with Claude Code