You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2026/07/16 05:15:00 UTC
[jira] [Commented] (CAMEL-24124) camel-jms: InOut exchanges in-flight during shutdown have AsyncCallback never completed - causes 45s graceful-shutdown stall
[ https://issues.apache.org/jira/browse/CAMEL-24124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18096668#comment-18096668 ]
Claus Ibsen commented on CAMEL-24124:
-------------------------------------
Fixed via PR https://github.com/apache/camel/pull/24742 (merged to main).
> camel-jms: InOut exchanges in-flight during shutdown have AsyncCallback never completed - causes 45s graceful-shutdown stall
> ----------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-24124
> URL: https://issues.apache.org/jira/browse/CAMEL-24124
> Project: Camel
> Issue Type: Bug
> Components: camel-jms
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Labels: code-review
> Fix For: 4.22.0
>
>
> When a JMS producer is stopped while InOut exchanges are awaiting replies, the pending AsyncCallbacks are never completed. This causes the shutdown orchestrator to wait the full graceful-shutdown timeout (default 45 seconds) before force-stopping.
> Two compounding problems:
> 1. {{DefaultTimeoutMap.doStop()}} (core module) calls {{map.clear()}} without emitting eviction events. The {{CorrelationTimeoutMap}} listener that would call {{ReplyHandler.onTimeout() -> processReply() -> callback.done()}} never fires. Pending reply handlers are silently discarded.
> 2. {{ReplyManagerSupport.processReply()}} guards with {{if (!isRunAllowed()) return}}. Even if problem 1 were fixed, once the service is stopping, {{processReply}} early-returns and the callback is never completed.
> The fix should either:
> - Drain pending replies during stop: iterate the map, fail each with a "shutting down" exception, and complete callbacks
> - Or relax the {{isRunAllowed()}} guard to allow reply completion during the stopping phase
> Both camel-jms and camel-sjms have the same pattern.
> This is long-standing design debt (since ~2010), originally noted as M7 in the camel-jms/camel-amqp code review umbrella CAMEL-24078.
> Related: CAMEL-24073 (send-failure double-callback) is on a different code path and does not address this.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)