Browse Source

Clear remaining invoker resources when releasing shared Connection

Closes gh-35932

(cherry picked from commit 3ccb0786db)
6.2.x
Juergen Hoeller 2 months ago
parent
commit
874498272f
  1. 16
      spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java

16
spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java

@ -757,10 +757,8 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe @@ -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 @@ -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 @@ -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) {

Loading…
Cancel
Save