Skip to content

Commit f9ba58e

Browse files
committed
Match subscriptions to remove by id
Commit 524ca1a unintentionally changed how subscriptions to be removed are matched. This commit restores that. See gh-25298
1 parent 471577a commit f9ba58e

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

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

+6-5
Original file line numberDiff line numberDiff line change
@@ -341,12 +341,13 @@ private void addToDestination(String destination, String sessionId, String subsc
341341

342342
public void updateAfterRemovedSubscription(String sessionId, Subscription subscription) {
343343
if (subscription.isPattern()) {
344-
String patternDestination = subscription.getDestination();
345-
for (String destination : this.destinationCache.keySet()) {
346-
if (pathMatcher.match(patternDestination, destination)) {
347-
removeInternal(destination, sessionId, subscription.getId());
344+
String subscriptionId = subscription.getId();
345+
this.destinationCache.forEach((destination, sessionIdToSubscriptionIds) -> {
346+
List<String> subscriptionIds = sessionIdToSubscriptionIds.get(sessionId);
347+
if (subscriptionIds != null && subscriptionIds.contains(subscriptionId)) {
348+
removeInternal(destination, sessionId, subscriptionId);
348349
}
349-
}
350+
});
350351
}
351352
else {
352353
removeInternal(subscription.getDestination(), sessionId, subscription.getId());

0 commit comments

Comments
 (0)