[ 
https://issues.apache.org/jira/browse/CAMEL-12709?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16571662#comment-16571662
 ] 

Claus Ibsen commented on CAMEL-12709:
-------------------------------------

Thanks for reporting. There is an issue with concurrency as the strategy can be 
shared on the splitter with multiple exchanges and that is not good.

The original that is being set would be set as the same instance. I am not sure 
what you do in your use-case that would set a clone of the exchange as Camel 
routes the same exchange instance for its lifecycle.

But the concurrency issue should be fixed.

> UseOriginalAggregationStrategy in outer loops
> ---------------------------------------------
>
>                 Key: CAMEL-12709
>                 URL: https://issues.apache.org/jira/browse/CAMEL-12709
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.21.2
>            Reporter: Matthias Humbert
>            Assignee: Claus Ibsen
>            Priority: Major
>
> Using splitters with the UseOriginalAggregationStrategy +in a loop+ causes 
> the splitter to return always the same original exchange.
>  
> {code:java}
> // my code is similar to the following one:
> from("direct:myLoop")
>   .loop(simple("{{export.maxLoopsPerRun}}"))
>     .setHeader(...) // changing header fields
>     .split(body(), new UseOriginalAggregationStrategy(null, false))
>       .to("direct:handleRecord")
>     .end()
>     .log("${in.headers}") // the headers of the exchange of the very first 
> loop iteration
>   .end()
> {code}
> Reason: Once the original exchange is set by 
> UseOriginalAggregationStrategy#setOriginal(Exchange), it is not updated any 
> more for loop iterations > 1.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to