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

Thread stuck in re-delivery loop after interrupting it

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 2.21.2, 2.22.1, 2.23.0
    • camel-core
    • None
    • Unknown

    Description

      I have experienced an issue where we could not cancel a message stuck in a re-delivery cycle. I was using Jolokia and calling the interrupt method on the DefaultAsyncProcessorAwaitManager for the blocked exchange and I had expected the re-delivery cycle to stop.

      This does not happen, and the blocked message continues to get executed and re-delivered. The mapping does get removed from the in-flight messages though. I can see also that the RejectedExecutionException set by the interrupt is also overwritten by the exception thrown by our failing bean. I think the problem here is that there are no checks for this RejectedExecutionException during the re-delivery cycle.

      It seems like the following part of the RedeliveryErrorHandler::call should pick up the fact that the exchange has been interrupted:

      // only process if the exchange hasn't failed
      // and it has not been handled by the error processor
      if (isDone(exchange)) {
       callback.done(false);
       return;
      }

      This is an issue if you have configured a long re-delivery cycle and you have a message retrying that you know will never succeed. 

      Attachments

        Activity

          People

            acosentino Andrea Cosentino
            NickUK Nick Horne
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: