From 4fc41eeeb90f9c5cd01f96ec46a1438ce2fbdc0e Mon Sep 17 00:00:00 2001 From: Bao Tran Date: Sun, 14 May 2017 18:55:53 +0300 Subject: [PATCH] Fix duplicate STOMP subscription id issue Issue: SPR-15543 --- .../messaging/simp/broker/DefaultSubscriptionRegistry.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistry.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistry.java index f6d8c455f44..8f95bffc7e8 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistry.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistry.java @@ -292,8 +292,11 @@ public class DefaultSubscriptionRegistry extends AbstractSubscriptionRegistry { String cachedDestination = entry.getKey(); if (getPathMatcher().match(destination, cachedDestination)) { LinkedMultiValueMap subs = entry.getValue(); - subs.add(sessionId, subsId); - this.accessCache.put(cachedDestination, subs.deepCopy()); + // Subscription id's may also be populated via getSubscriptions() + if (!subs.containsKey(sessionId) || !subs.get(sessionId).contains(subsId)) { + subs.add(sessionId, subsId); + this.accessCache.put(cachedDestination, subs.deepCopy()); + } } } }