Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
2.7.1
-
None
-
JDK 1.6.0_20, Linux x86_64
-
Unknown
Description
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.