Madan Jampani

Use thread-safe multimaps

Change-Id: I4e2d1d39fff29caa90159673dd3bd7ff82682c3c
...@@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableSet; ...@@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableSet;
23 import com.google.common.collect.Lists; 23 import com.google.common.collect.Lists;
24 import com.google.common.collect.Maps; 24 import com.google.common.collect.Maps;
25 import com.google.common.collect.Multimap; 25 import com.google.common.collect.Multimap;
26 +import com.google.common.collect.Multimaps;
26 import com.google.common.collect.Sets; 27 import com.google.common.collect.Sets;
27 import com.google.common.util.concurrent.Futures; 28 import com.google.common.util.concurrent.Futures;
28 29
...@@ -125,8 +126,10 @@ public class DatabaseManager implements StorageService, StorageAdminService { ...@@ -125,8 +126,10 @@ public class DatabaseManager implements StorageService, StorageAdminService {
125 private ExecutorService queuePollExecutor; 126 private ExecutorService queuePollExecutor;
126 private ApplicationListener appListener = new InternalApplicationListener(); 127 private ApplicationListener appListener = new InternalApplicationListener();
127 128
128 - private final Multimap<String, DefaultAsyncConsistentMap> maps = ArrayListMultimap.create(); 129 + private final Multimap<String, DefaultAsyncConsistentMap> maps =
129 - private final Multimap<ApplicationId, DefaultAsyncConsistentMap> mapsByApplication = ArrayListMultimap.create(); 130 + Multimaps.synchronizedMultimap(ArrayListMultimap.create());
131 + private final Multimap<ApplicationId, DefaultAsyncConsistentMap> mapsByApplication =
132 + Multimaps.synchronizedMultimap(ArrayListMultimap.create());
130 private final Map<String, DefaultDistributedQueue> queues = Maps.newConcurrentMap(); 133 private final Map<String, DefaultDistributedQueue> queues = Maps.newConcurrentMap();
131 134
132 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 135 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
......