Invalid asynchronous behavior with EIP filter
---------------------------------------------
Key: SMXCOMP-768
URL: https://issues.apache.org/activemq/browse/SMXCOMP-768
Project: ServiceMix Components
Issue Type: Bug
Components: servicemix-eip
Affects Versions: servicemix-eip-2010.01
Environment: Fuse ESB - 3.3.1.8
Reporter: Trevor Pounds
Fix For: servicemix-eip-2010.02
Using the EIP message filter with Fuse ESB 3.3.1.8 we noticed incorrect acking
when data is sent asynchronously with a large data pipeline. If the filter is
used as an intermediate point within the pipeline it will incorrectly ack the
downstream service engines before an upstream exchange has sent back its
response. This becomes troublesome in the case where transactions may be used
and an upstream exchange returns an error after the downstream component has
completed its exchange. Consider the following case where a JMS consumer sends
to an HTTP provider through an EIP filter.
| JMS | -> | FILTER | -> | HTTP |
When the JMS consumer sends a message to the filter asynchronously the EIP
filter acks the JMS consumer immediately regardless of whether the HTTP
component has handled it properly. As a result the JMS component has no way to
recover from an HTTP fault or error. I've attached a patch that changes the
current asynchronous fire and forget behavior to be consistent to how it is
done with the EIP static recipient list and pipeline by maintaining a store of
exchanges and acking downstream exchanges in an ordered fashion.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.