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

Peter Nowak commented on CAMEL-20103:
-------------------------------------

my pull request (containing the same changes as the attached patch) 
https://github.com/apache/camel/pull/11971

> DefaultProducerCache returns wrong ProducerTemplate under high concurrency 
> load
> -------------------------------------------------------------------------------
>
>                 Key: CAMEL-20103
>                 URL: https://issues.apache.org/jira/browse/CAMEL-20103
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 4.0.0, 4.0.1, 4.0.2, 4.1.0, 4.2.0
>            Reporter: Peter Nowak
>            Priority: Critical
>         Attachments: patch.diff
>
>
> as already posted on the [dev mailing 
> list|https://lists.apache.org/thread/2o0fhstmdjgc0nss0t30d9g3337qnm8j] the 
> DefaultProducerCache can return a wrong ProducerTemplate under high 
> concurrency load which leads to misrouted exchanges and therefor errors in 
> the application and workflow.
>  
> The improvement in the DefaultProducerCache from [issue 
> 19058|https://issues.apache.org/jira/browse/CAMEL-19058] introduced a severe 
> concurrency issue with [that 
> change|https://github.com/apache/camel/commit/921ce519331ac5c8b0a1dfd099f9acbaba4feeab].
>  
> While writing to the "lastUsed" fields in "acquireProducers" is synchronised, 
> so that they are updated together, the read at the beginning of the method is 
> not synchronised at all with the writes and therefor can be read at every 
> time, even between the synced update to the fields which can lead to wrong 
> producer templates being returned under high concurrency load. This then 
> leads to exchanges being delivered to wrong endpoints causing severe 
> malfunctions and errors.
>  
> i have created a patch (and also a branch in my forked camel repo) including 
> the fix and a unit test reproduces the problem with returning the wrong 
> producer template for the requested endpoint when accessing from multiple 
> threads



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

Reply via email to