From 3ccb0786db4ea817cc26302dfdc22c20d435a410 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 1 Dec 2025 15:03:00 +0100 Subject: [PATCH] Clear remaining invoker resources when releasing shared Connection Closes gh-35932 --- .../DefaultMessageListenerContainer.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java b/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java index f5380293f02..6d223fd899c 100644 --- a/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java +++ b/spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java @@ -757,10 +757,8 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe } waitCount++; } - // Clear remaining scheduled invokers, possibly left over as paused tasks - for (AsyncMessageListenerInvoker scheduledInvoker : this.scheduledInvokers) { - scheduledInvoker.clearResources(); - } + // Clear remaining scheduled invokers, possibly left over as paused tasks. + clearResourcesInScheduledInvokers(); this.scheduledInvokers.clear(); } catch (InterruptedException ex) { @@ -910,6 +908,15 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe } } + /** + * Clear resources in scheduled invokers, even in case of paused tasks. + */ + private void clearResourcesInScheduledInvokers() { + for (AsyncMessageListenerInvoker scheduledInvoker : this.scheduledInvokers) { + scheduledInvoker.clearResources(); + } + } + /** * Use a shared JMS Connection depending on the "cacheLevel" setting. * @see #setCacheLevel @@ -1427,6 +1434,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe if (activeInvokerCount == 0) { if (!isRunning()) { // Proactively release shared Connection when stopped. + clearResourcesInScheduledInvokers(); releaseSharedConnection(); } if (stopCallback != null) {