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

Claus Ibsen resolved CAMEL-6097.
--------------------------------

    Resolution: Fixed

Thanks for reporting, and providing ideas for a solution.
                
> Race condition in AggregatorProcessor recovery sometimes causes duplicates
> --------------------------------------------------------------------------
>
>                 Key: CAMEL-6097
>                 URL: https://issues.apache.org/jira/browse/CAMEL-6097
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.9.2
>            Reporter: Benjamin Truitt
>            Assignee: Claus Ibsen
>             Fix For: 2.9.6, 2.10.5, 2.11.0
>
>
> There seems to be a race condition in 
> org.apache.camel.processor.aggregate.AggregateProcessor's RecoverTask.  That 
> task calls recoverable.scan() to find Exchanges that may need to be 
> recovered. Since scan() might return Exchanges that are actually just in 
> progress, the RecoverTask then checks to see if the Exchange really is in 
> progress.  It does this by calling 
> inProgressCompleteExchanges.contains(exchangeId).  However, that collection 
> may have been modified during the time between when scan() returned and when 
> contains() is called.  This would happen if the in-progress Exchange 
> completes before contains() is called.  In that situation, inProgress would 
> evaluate to false, so the Exchange would be recovered.  This results in a 
> duplicate Exchange being output by the Aggregator component. 
> One possible solution might be to prevent updating the 
> inProgressCompleteExchanges during the critical section. Another possible 
> solution might be to copy inProgressCompleteExchanges before calling scan().  
> I'm sure that there are other ways to deal with this also.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to