[
https://issues.apache.org/jira/browse/CAMEL-12709?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16583666#comment-16583666
]
Frank Olschewski commented on CAMEL-12709:
------------------------------------------
I think you missed the ShareUnitOfWorkAggregationStrategy in your fix.
it should be like this:
{code:java}
if (strategy instanceof UseOriginalAggregationStrategy) {
UseOriginalAggregationStrategy original = (UseOriginalAggregationStrategy)
strategy;
AggregationStrategy clone = original.newInstance(exchange);
if (isShareUnitOfWork()) {
clone = new ShareUnitOfWorkAggregationStrategy(clone);
}
setAggregationStrategyOnExchange(exchange, clone);
}
{code}
> 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
> Fix For: 2.21.3, 2.22.1, 2.23.0
>
>
> 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)