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

Claus Ibsen resolved CAMEL-11983.
---------------------------------
       Resolution: Fixed
    Fix Version/s: 2.20.1
                   2.19.5

> XsltAggregationStrategy thread safety during initialization
> -----------------------------------------------------------
>
>                 Key: CAMEL-11983
>                 URL: https://issues.apache.org/jira/browse/CAMEL-11983
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-xslt
>    Affects Versions: 2.20.0
>         Environment: Apache Camel 2.17 on EAP Fuse 6.4.0
> Apache Camel 2.20 on Spring Boot standalone
>            Reporter: Pafsanias Ftakas
>            Assignee: Claus Ibsen
>            Priority: Minor
>              Labels: thread-safety
>             Fix For: 2.19.5, 2.20.1, 2.21.0
>
>         Attachments: reentrancy.zip
>
>
> It seems that there is a race condition in the XsltAggregatorStrategy. The 
> following code:
> {code:java}
> if (xslt == null) {
>     initialize(oldExchange.getContext());
> }
> ...
> xslt.process(oldExchange);
> {code}
> means that potentially one thread might be still working on the initialize 
> call while another thread passes through the gate of the if statement and 
> executes the xslt.process() call. If the initialization is not quite 
> complete, the XsltBuilder will throw an exception complaining that the 
> template has not been set.
> I have written a small Spring Boot project (which I am attaching to this Jira 
> issue) that demonstrates this. I understand that this only happens when 
> parallelization is present during the xslt member initialization above, and 
> that it sorts itself out in subsequent calls, but I have managed to see this 
> during testing, so it is not that impossible for it to happen.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to