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

Thread stuck in re-delivery loop after interrupting it

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.21.2, 2.22.1, 2.23.0
    • Component/s: camel-core
    • Labels:
      None
    • Estimated Complexity:
      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

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

              Dates

              • Created:
                Updated:
                Resolved: