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

Claus Ibsen reassigned CAMEL-24078:
-----------------------------------

    Assignee: Claus Ibsen

> camel-jms / camel-amqp code review (July 2026): umbrella for medium/low 
> findings
> --------------------------------------------------------------------------------
>
>                 Key: CAMEL-24078
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24078
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 4.21.0
>            Reporter: Federico Mariani
>            Assignee: Claus Ibsen
>            Priority: Major
>              Labels: code-review
>         Attachments: camel-jms-amqp-medium-low-findings.md
>
>
> A deep code review of camel-jms and camel-amqp (July 2026, main / 
> 4.22.0-SNAPSHOT) surfaced 6 high-severity findings - filed individually with 
> failing test reproducers attached:
> * CAMEL-24072 - camel-jms: component-level transacted=true breaks 
> ConnectionFactory autowiring - startup fails with "connectionFactory must be 
> specified"
> * CAMEL-24073 - camel-jms: InOut AsyncCallback.done() invoked twice when the 
> JMS send fails after reply registration
> * CAMEL-24074 - camel-jms: TemporaryQueueReplyManager resolves the temporary 
> reply queue without synchronization - replies can be black-holed (CAMEL-20769 
> follow-up)
> * CAMEL-24075 - camel-jms: transferException=true silently swallows 
> processing failures (and commits the transaction) when the message has no 
> JMSReplyTo
> * CAMEL-24076 - camel-jms: browseLimit URI option is dead - browsing is 
> unlimited despite the documented default of 100 (CAMEL-21183 follow-up)
> * CAMEL-24077 - camel-amqp: useSsl=true renders empty transport.* options - 
> breaks JVM-default trust store and server-only TLS
> This umbrella collects the remaining *12 medium* and *15 low* findings; the 
> full details (code references, failure scenarios, history, and a 
> route-reachability triage for each) are in the attached 
> {{camel-jms-amqp-medium-low-findings.md}}.
> Medium highlights:
> * M1: {{JmsSendDynamicAware.resolveStaticUri}} corrupts the static toD URI 
> via literal first-occurrence replace (can silently send to a *queue* named 
> {{topic}}); affects AMQPSendDynamicAware identically
> * M2: {{JmsPollingConsumer.receive(timeout)}} mutates the shared JmsTemplate 
> receiveTimeout - not thread-safe under concurrent 
> {{pollEnrich}}/ConsumerTemplate use
> * M3: endpoint-level {{includeAllJMSXProperties=true}} silently ignored 
> (component strategy is set on the endpoint before URI options are applied)
> * M4: component-level {{messageListenerContainerFactory}} silently ignored 
> (consumerType never switched to Custom)
> * M5: suspend/resume permanently kills consumption with 
> {{defaultTaskExecutorType=ThreadPool}} (executor destroyed on stop, container 
> reused on resume)
> * M6: {{asyncStartListener=true}} defeats {{autoStartup=false}} (ordering 
> race on the initialized flag)
> * M9: camel-amqp - setting username/password clobbers an explicitly 
> configured connectionFactory with a new localhost:5672 factory
> The review also verified the security posture clean (CVE-2025-27636 
> header-injection defenses, ObjectMessage defaults, security annotations) - 
> details in the attachment.
> Individual sub-tasks/issues can be split out of this umbrella as they get 
> picked up.
> ----
> _This issue was researched and filed by Claude Code on behalf of [~croway] 
> (GitHub: Croway), as part of a deep code review of camel-jms and camel-amqp. 
> A failing JUnit reproducer is attached; it fails deterministically on current 
> main (4.22.0-SNAPSHOT)._



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to