Fix cache cleanup issue in DefaultSubscriptionRegistry
Issue: SPR-11931
This commit is contained in:
parent
669386abac
commit
083d415fc4
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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…
Reference in New Issue