Commit b13b810e4eb812042fde9be16e6db3d0b858e9cc
1 parent
5ba6b67c
use threadsafe collection during subscription
Showing
1 changed file
with
5 additions
and
5 deletions
... | ... | @@ -60,7 +60,6 @@ import javax.annotation.PostConstruct; |
60 | 60 | import javax.annotation.PreDestroy; |
61 | 61 | import java.util.ArrayList; |
62 | 62 | import java.util.Collections; |
63 | -import java.util.HashMap; | |
64 | 63 | import java.util.HashSet; |
65 | 64 | import java.util.Iterator; |
66 | 65 | import java.util.List; |
... | ... | @@ -68,6 +67,7 @@ import java.util.Map; |
68 | 67 | import java.util.Optional; |
69 | 68 | import java.util.Set; |
70 | 69 | import java.util.TreeMap; |
70 | +import java.util.concurrent.ConcurrentHashMap; | |
71 | 71 | import java.util.concurrent.ExecutorService; |
72 | 72 | import java.util.concurrent.Executors; |
73 | 73 | import java.util.function.Consumer; |
... | ... | @@ -120,8 +120,8 @@ public class DefaultTelemetrySubscriptionService implements TelemetrySubscriptio |
120 | 120 | } |
121 | 121 | } |
122 | 122 | |
123 | - private final Map<EntityId, Set<Subscription>> subscriptionsByEntityId = new HashMap<>(); | |
124 | - private final Map<String, Map<Integer, Subscription>> subscriptionsByWsSessionId = new HashMap<>(); | |
123 | + private final Map<EntityId, Set<Subscription>> subscriptionsByEntityId = new ConcurrentHashMap<>(); | |
124 | + private final Map<String, Map<Integer, Subscription>> subscriptionsByWsSessionId = new ConcurrentHashMap<>(); | |
125 | 125 | |
126 | 126 | @Override |
127 | 127 | public void addLocalWsSubscription(String sessionId, EntityId entityId, SubscriptionState sub) { |
... | ... | @@ -453,9 +453,9 @@ public class DefaultTelemetrySubscriptionService implements TelemetrySubscriptio |
453 | 453 | } |
454 | 454 | |
455 | 455 | private void registerSubscription(String sessionId, EntityId entityId, Subscription subscription) { |
456 | - Set<Subscription> deviceSubscriptions = subscriptionsByEntityId.computeIfAbsent(entityId, k -> new HashSet<>()); | |
456 | + Set<Subscription> deviceSubscriptions = subscriptionsByEntityId.computeIfAbsent(entityId, k -> ConcurrentHashMap.newKeySet()); | |
457 | 457 | deviceSubscriptions.add(subscription); |
458 | - Map<Integer, Subscription> sessionSubscriptions = subscriptionsByWsSessionId.computeIfAbsent(sessionId, k -> new HashMap<>()); | |
458 | + Map<Integer, Subscription> sessionSubscriptions = subscriptionsByWsSessionId.computeIfAbsent(sessionId, k -> new ConcurrentHashMap<>()); | |
459 | 459 | sessionSubscriptions.put(subscription.getSubscriptionId(), subscription); |
460 | 460 | } |
461 | 461 | ... | ... |