diff options
3 files changed, 12 insertions, 10 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistries.java b/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistries.java index b4bda7fcbb9..c25ab0315a3 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistries.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistries.java @@ -4,7 +4,8 @@ package com.yahoo.vespa.config.server.host; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.TenantName; -import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * Component to hold host registries. @@ -14,7 +15,7 @@ import java.util.HashMap; public class HostRegistries { private final HostRegistry<TenantName> tenantHostRegistry = new HostRegistry<>(); - private final HashMap<TenantName, HostRegistry<ApplicationId>> applicationHostRegistries = new HashMap<>(); + private final Map<TenantName, HostRegistry<ApplicationId>> applicationHostRegistries = new ConcurrentHashMap<>(); public HostRegistry<TenantName> getTenantHostRegistry() { return tenantHostRegistry; @@ -29,4 +30,5 @@ public class HostRegistries { applicationHostRegistries.put(tenant, applicationIdHostRegistry); return applicationIdHostRegistry; } + } diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java index d9494c38fc8..95d75928988 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java @@ -116,7 +116,7 @@ class MemoryFileSystem extends FileSystem { /** The content of this node, never null. This buffer is effectively immutable. */ private byte[] content; - private Map<String, Node> children = new LinkedHashMap<>(); + private Map<String, Node> children = Collections.synchronizedMap(new LinkedHashMap<>()); private Node(Node parent, String name) { this(parent, name, new byte[0]); diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java index 85fa0ded838..3d0fc933e90 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java @@ -61,7 +61,7 @@ import org.apache.curator.framework.recipes.cache.PathChildrenCacheListener; import org.apache.curator.framework.recipes.locks.InterProcessLock; import org.apache.curator.framework.recipes.locks.InterProcessSemaphoreMutex; import org.apache.curator.framework.state.ConnectionStateListener; -import org.apache.curator.utils.*; +import org.apache.curator.utils.EnsurePath; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.Watcher; @@ -73,12 +73,12 @@ import java.time.Duration; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; @@ -113,7 +113,7 @@ public class MockCurator extends Curator { private final MemoryFileSystem fileSystem = new MemoryFileSystem(); /** Atomic counters. A more accurate mock would store these as files in the file system */ - private final Map<String, MockAtomicCounter> atomicCounters = new HashMap<>(); + private final Map<String, MockAtomicCounter> atomicCounters = new ConcurrentHashMap<>(); /** Listeners to changes to a particular path */ private final ListenerMap listeners = new ListenerMap(); @@ -361,8 +361,8 @@ public class MockCurator extends Curator { /** The regular listener implementation which notifies registered file and directory listeners */ private class ListenerMap extends Listeners { - private final Map<Path, PathChildrenCacheListener> directoryListeners = new HashMap<>(); - private final Map<Path, NodeCacheListener> fileListeners = new HashMap<>(); + private final Map<Path, PathChildrenCacheListener> directoryListeners = new ConcurrentHashMap<>(); + private final Map<Path, NodeCacheListener> fileListeners = new ConcurrentHashMap<>(); public void add(Path path, PathChildrenCacheListener listener) { directoryListeners.put(path, listener); @@ -376,8 +376,8 @@ public class MockCurator extends Curator { public void notify(Path path, PathChildrenCacheEvent event) { try { // Snapshot directoryListeners in case notification leads to new directoryListeners added - Set<Map.Entry<Path, PathChildrenCacheListener>> directoryLlistenerSnapshot = new HashSet<>(directoryListeners.entrySet()); - for (Map.Entry<Path, PathChildrenCacheListener> listener : directoryLlistenerSnapshot) { + Set<Map.Entry<Path, PathChildrenCacheListener>> directoryListenerSnapshot = new HashSet<>(directoryListeners.entrySet()); + for (Map.Entry<Path, PathChildrenCacheListener> listener : directoryListenerSnapshot) { if (path.isChildOf(listener.getKey())) listener.getValue().childEvent(curatorFramework, event); } |