Skip to content

Commit 083d415

Browse files
sdeleuzerstoyanchev
authored andcommitted
Fix cache cleanup issue in DefaultSubscriptionRegistry
Issue: SPR-11931
1 parent 669386a commit 083d415

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ protected void removeSubscriptionInternal(String sessionId, String subsId, Messa
9696
SessionSubscriptionInfo info = this.subscriptionRegistry.getSubscriptions(sessionId);
9797
if (info != null) {
9898
String destination = info.removeSubscription(subsId);
99-
if (destination != null && info.getSubscriptions(destination) == null) {
99+
if (destination != null) {
100100
this.destinationCache.updateAfterRemovedSubscription(destination, sessionId, subsId);
101101
}
102102
}

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,22 @@ public void unregisterSubscription() {
270270
assertEquals(subscriptionIds, sort(actual.get(sessIds.get(2))));
271271
}
272272

273+
// SPR-11931
274+
275+
@Test
276+
public void registerTwiceAndUnregisterSubscriptions() {
277+
278+
this.registry.registerSubscription(subscribeMessage("sess01", "subs01", "/foo"));
279+
this.registry.registerSubscription(subscribeMessage("sess01", "subs02", "/foo"));
280+
MultiValueMap<String, String> actual = this.registry.findSubscriptions(message("/foo"));
281+
assertEquals("Expected 1 element", 1, actual.size());
282+
283+
this.registry.unregisterSubscription(unsubscribeMessage("sess01", "subs01"));
284+
this.registry.unregisterSubscription(unsubscribeMessage("sess01", "subs02"));
285+
actual = this.registry.findSubscriptions(message("/foo"));
286+
assertEquals("Expected no element", 0, actual.size());
287+
}
288+
273289
@Test
274290
public void unregisterAllSubscriptions() {
275291

0 commit comments

Comments
 (0)