Raul Kripalani created CAMEL-5465:
-------------------------------------
Summary: JMS Reply Managers should remove correlation earlier
Key: CAMEL-5465
URL: https://issues.apache.org/jira/browse/CAMEL-5465
Project: Camel
Issue Type: Bug
Components: camel-activemq, camel-jms
Affects Versions: 2.10.0, 2.9.2, 2.8.6
Reporter: Raul Kripalani
When handling synchronous invocations, both JMS reply managers
{{TemporaryQueueReplyManager}} and {{PersistentQueueReplyManager}} remove the
correlation too late.
{{ReplyManager.handleReplyMessage}} handles the reply triggering the
continuation of the remaining route logic, which may as well contain yet
another JMS invocation to exactly the same destination, e.g.:
{code}
<route>
<from uri="direct:hello" />
<inOut uri="activemq:queue:test" />
<inOut uri="activemq:queue:test" />
</route>
{code}
As a result, the correlation is not removed from the CorrelationMap until the
asynchronous dispatch to the second endpoint has finished and the stack unwinds.
What's worse is that, due to Camel's re-use of endpoints, both producers are
represented as exactly the same Endpoint instance, sharing *the same
ReplyManager and CorrelationMap*.
So during the dispatch to the second endpoint, the correlation is overwritten
in the CorrelationMap but, immediately after, the first endpoint removes the
correlation anyway!
Since correlation ID are dragged on (see CAMEL-5390), the route will fail,
providing a bad out-of-box experience for such a simple use case.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira