You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2019/08/01 09:03:00 UTC

[jira] [Resolved] (CAMEL-12968) DefaultFluentProducerTemplate is not thread safe (endpoint, etc.)

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

Claus Ibsen resolved CAMEL-12968.
---------------------------------
    Resolution: Fixed

> DefaultFluentProducerTemplate is not thread safe (endpoint, etc.)
> -----------------------------------------------------------------
>
>                 Key: CAMEL-12968
>                 URL: https://issues.apache.org/jira/browse/CAMEL-12968
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.22.1, 2.23.0
>            Reporter: Paul D Johe
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 3.0.0, 3.0.0.M5
>
>
> The DefaultFluentProducerTemplate saves state between method calls. This leads to unexpected behavior when the javadoc specifies that it should be thread safe.
> For example:
>  # thread 1 calls fluentProducerTemplate.to("direct:a").send("message1");
>  # thread 2 calls fluentProducerTemplate.to("direct:b").send("message2");
> If these are run in parallel, the sequence of calls can be:
>  # thread 1 calls to("direct:a") - endpoint in the object is direct:a
>  # thread 2 calls to("direct:b") - endpoint in the object is direct:b
>  # *thread 1 calls send("message1") - this gets sent incorrectly to direct:b*
>  # thread 2 calls send("message2") - this gets sent correctly to direct:b
> Endpoint is one example, but almost all fields in this class share this behavior. It should be clearly documented which fields can be used fluently over multiple threads, and which cannot. As the API is today, all methods returning 'this' should be made thread-safe (state is only local to the caller) so that the fluent interface works as expected.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)