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

Claus Ibsen updated CAMEL-24365:
--------------------------------
    Fix Version/s: 4.22.0

> camel-core - Attachment trait lost when producer creates a fresh OUT message 
> (regression from CAMEL-21755)
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-24365
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24365
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 4.10.1
>            Reporter: Claus Ibsen
>            Priority: Major
>             Fix For: 4.22.0
>
>
> CAMEL-21755 (commit df12381957fa, released in 4.10.1) moved attachment 
> storage from Exchange-level safe-copy properties to Message-level traits 
> (MessageTrait.ATTACHMENTS). This broke any producer that creates a fresh OUT 
> message via exchange.getOut(), because AbstractExchange.newOutMessage() calls 
> in.newInstance() which returns a blank message with no traits.
> The root cause is in AbstractExchange.newOutMessage() which creates a fresh 
> message without copying the ATTACHMENTS trait from the IN message. Before 
> 4.10.1, attachments lived on the Exchange and were naturally shared across 
> all messages. After the trait migration, they live on the Message and are 
> silently dropped when a new OUT is created.
> This affects all producers that use exchange.getOut() to create a response 
> message (~127 usages across 30+ components), including camel-http (reported 
> in CAMEL-24364), and potentially camel-ssh, camel-sql, camel-cxf-rest, 
> camel-jcr, etc.
> The JMS component got a per-component workaround in CAMEL-23193 (manually 
> copying the trait in JmsMessage.copyFrom()), but SJMS and all other 
> components never got it.
> The fix belongs in core (AbstractExchange.newOutMessage()) to copy the 
> ATTACHMENTS trait from IN to the new OUT message, restoring the pre-4.10.1 
> semantics. The per-component workaround in JMS can then be removed.



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

Reply via email to