From aba0771e813825cb63badcf3f40a723e20fc34a0 Mon Sep 17 00:00:00 2001 From: blavenie <benoit.lavenier@e-is.pro> Date: Thu, 18 Oct 2018 18:53:58 +0200 Subject: [PATCH] [fix] Fix concurrent access to static map, in ChangeService --- .../elasticsearch/service/changes/ChangeService.java | 7 ++++--- .../elasticsearch/user/service/UserEventService.java | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/service/changes/ChangeService.java b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/service/changes/ChangeService.java index 5f6be682..d969c5bb 100644 --- a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/service/changes/ChangeService.java +++ b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/service/changes/ChangeService.java @@ -52,6 +52,7 @@ import org.elasticsearch.indices.IndicesService; import org.joda.time.DateTime; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; public class ChangeService { @@ -65,10 +66,10 @@ public class ChangeService { private final ESLogger log = Loggers.getLogger(ChangeService.class); - private static final Map<String, ChangeListener> LISTENERS = new HashMap<>(); + private static final Map<String, ChangeListener> LISTENERS = new ConcurrentHashMap<>(); - private static Map<String, ChangeSource> LISTENERS_SOURCES = new HashMap<>(); - private static Map<String, Integer> LISTENERS_SOURCES_USAGE_COUNT = new HashMap<>(); + private static Map<String, ChangeSource> LISTENERS_SOURCES = new ConcurrentHashMap<>(); + private static Map<String, Integer> LISTENERS_SOURCES_USAGE_COUNT = new ConcurrentHashMap<>(); @Inject public ChangeService(final Settings settings, IndicesService indicesService) { diff --git a/cesium-plus-pod-user/src/main/java/org/duniter/elasticsearch/user/service/UserEventService.java b/cesium-plus-pod-user/src/main/java/org/duniter/elasticsearch/user/service/UserEventService.java index 71d059d6..f77a223d 100644 --- a/cesium-plus-pod-user/src/main/java/org/duniter/elasticsearch/user/service/UserEventService.java +++ b/cesium-plus-pod-user/src/main/java/org/duniter/elasticsearch/user/service/UserEventService.java @@ -59,6 +59,7 @@ import org.elasticsearch.search.sort.SortOrder; import java.io.IOException; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; /** @@ -76,7 +77,7 @@ public class UserEventService extends AbstractService implements ChangeService.C public static final String INDEX = "user"; public static final String EVENT_TYPE = "event"; - private static final Map<String, UserEventListener> LISTENERS = new HashMap<>(); + private static final Map<String, UserEventListener> LISTENERS = new ConcurrentHashMap<>(); private static final List<ChangeSource> CHANGE_LISTEN_SOURCES = ImmutableList.of(new ChangeSource(INDEX, EVENT_TYPE)); -- GitLab