From 44c31a6aad26ce2a4e7225e93e6fb26612f07b2c 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 92694f8d9a9..501f8c9f396 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()); + } } } }