StreamResequencer poisoned by bad Exchange
------------------------------------------
Key: CAMEL-4401
URL: https://issues.apache.org/jira/browse/CAMEL-4401
Project: Camel
Issue Type: Bug
Components: camel-core
Affects Versions: 2.7.1
Environment: JDK 1.6.0_20, Linux x86_64
Reporter: David Tombs
Priority: Minor
If a StreamResequencer's configured Expression returns null for an Exchange
(e.g., if a header does not exist) and the resequencer's pipeline is currently
empty, the bad Exchange will be added to the pipeline.
ResequencerEnginer.insert() succeeds in calling sequence.add() with the bad
Exchange, but throws an Exception when calling sequence.successor(). This
results in the message ending up at the Error Handler but the bad Exchange
still in the Engine's sequence. Probably insert() should be probably be more
transactional.
After this happens:
1) Trying to add a further exchange (even a "good" one) results in an Exception
when calling sequence.add().
2) ResequencerEngine.deliverNext() results in an Exception so no further
messages will be delievered.
I will attach a unit test to reproduce when I get a chance.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira