Add concurrent test and fix potential NPE
After SPR-12884 (4.2 RC1) introduced support for a selector header expression on SUBSCRIBE frames, messages from the destination cache are further filtered based on the selector expression. While adding a test to find subscriptions at the same time as unsubscribing, a potential NPE was exposed. This commit fixes the NPE. Issue: SPR-13204
This commit is contained in:
@@ -16,8 +16,6 @@
|
||||
|
||||
package org.springframework.messaging.simp.broker;
|
||||
|
||||
import static org.springframework.messaging.support.MessageHeaderAccessor.getAccessor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -46,6 +44,8 @@ import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.util.PathMatcher;
|
||||
|
||||
import static org.springframework.messaging.support.MessageHeaderAccessor.getAccessor;
|
||||
|
||||
|
||||
/**
|
||||
* Implementation of {@link SubscriptionRegistry} that stores subscriptions
|
||||
@@ -209,7 +209,13 @@ public class DefaultSubscriptionRegistry extends AbstractSubscriptionRegistry {
|
||||
for (String sessionId : allMatches.keySet()) {
|
||||
for (String subId : allMatches.get(sessionId)) {
|
||||
SessionSubscriptionInfo info = this.subscriptionRegistry.getSubscriptions(sessionId);
|
||||
if (info == null) {
|
||||
continue;
|
||||
}
|
||||
Subscription sub = info.getSubscription(subId);
|
||||
if (sub == null) {
|
||||
continue;
|
||||
}
|
||||
Expression expression = sub.getSelectorExpression();
|
||||
if (expression == null) {
|
||||
result.add(sessionId, subId);
|
||||
|
||||
Reference in New Issue
Block a user