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

        

Reply via email to