Browse Source

Fix cache cleanup issue in DefaultSubscriptionRegistry

Issue: SPR-11931
pull/574/merge
Sebastien Deleuze 12 years ago committed by Rossen Stoyanchev
parent
commit
083d415fc4
  1. 2
      spring-messaging/src/main/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistry.java
  2. 16
      spring-messaging/src/test/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistryTests.java

2
spring-messaging/src/main/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistry.java

@ -96,7 +96,7 @@ public class DefaultSubscriptionRegistry extends AbstractSubscriptionRegistry { @@ -96,7 +96,7 @@ public class DefaultSubscriptionRegistry extends AbstractSubscriptionRegistry {
SessionSubscriptionInfo info = this.subscriptionRegistry.getSubscriptions(sessionId);
if (info != null) {
String destination = info.removeSubscription(subsId);
if (destination != null && info.getSubscriptions(destination) == null) {
if (destination != null) {
this.destinationCache.updateAfterRemovedSubscription(destination, sessionId, subsId);
}
}

16
spring-messaging/src/test/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistryTests.java

@ -270,6 +270,22 @@ public class DefaultSubscriptionRegistryTests { @@ -270,6 +270,22 @@ public class DefaultSubscriptionRegistryTests {
assertEquals(subscriptionIds, sort(actual.get(sessIds.get(2))));
}
// SPR-11931
@Test
public void registerTwiceAndUnregisterSubscriptions() {
this.registry.registerSubscription(subscribeMessage("sess01", "subs01", "/foo"));
this.registry.registerSubscription(subscribeMessage("sess01", "subs02", "/foo"));
MultiValueMap<String, String> actual = this.registry.findSubscriptions(message("/foo"));
assertEquals("Expected 1 element", 1, actual.size());
this.registry.unregisterSubscription(unsubscribeMessage("sess01", "subs01"));
this.registry.unregisterSubscription(unsubscribeMessage("sess01", "subs02"));
actual = this.registry.findSubscriptions(message("/foo"));
assertEquals("Expected no element", 0, actual.size());
}
@Test
public void unregisterAllSubscriptions() {

Loading…
Cancel
Save