From ab944e6fdf5a324617fa6901fcdb0e2e736770ad Mon Sep 17 00:00:00 2001 From: Bao Tran Date: Sun, 14 May 2017 18:55:53 +0300 Subject: [PATCH] Fix duplicate subscriptionId for destination-sessionId key Issue: SPR-15543 --- .../messaging/simp/broker/DefaultSubscriptionRegistry.java | 6 ++++-- 1 file changed, 4 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 f6d8c455f44d..319907280581 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,10 @@ public void updateAfterNewSubscription(String destination, String sessionId, Str String cachedDestination = entry.getKey(); if (getPathMatcher().match(destination, cachedDestination)) { LinkedMultiValueMap subs = entry.getValue(); - subs.add(sessionId, subsId); - this.accessCache.put(cachedDestination, subs.deepCopy()); + if (!subs.containsKey(sessionId) || !subs.get(sessionId).contains(subsId)) { + subs.add(sessionId, subsId); + this.accessCache.put(cachedDestination, subs.deepCopy()); + } } } }