Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-4401

StreamResequencer poisoned by bad Exchange

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 2.7.1
    • 2.9.0
    • camel-core
    • 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.

      Attachments

        Activity

          People

            davsclaus Claus Ibsen
            dgtombs David Tombs
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: