Clear remaining invoker resources when releasing shared Connection

Closes gh-35932

(cherry picked from commit 3ccb0786db)
This commit is contained in:
Juergen Hoeller
2025-12-01 15:04:39 +01:00
parent 2144813bad
commit 874498272f
@@ -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
@@ -1431,6 +1438,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
if (activeInvokerCount == 0) {
if (!isRunning()) {
// Proactively release shared Connection when stopped.
clearResourcesInScheduledInvokers();
releaseSharedConnection();
}
if (stopCallback != null) {