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