You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ol...@apache.org on 2019/08/17 07:49:12 UTC

[sling-org-apache-sling-clam] 06/12: make iteration of clients thread-safe

This is an automated email from the ASF dual-hosted git repository.

olli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-clam.git

commit 72293dd1436faba76e392e3b2ce701cb04e7c410
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Fri Aug 16 18:14:55 2019 +0200

    make iteration of clients thread-safe
---
 .../java/org/apache/sling/clam/http/internal/ClamEventsServlet.java | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/clam/http/internal/ClamEventsServlet.java b/src/main/java/org/apache/sling/clam/http/internal/ClamEventsServlet.java
index d62d2b8..377ecd6 100644
--- a/src/main/java/org/apache/sling/clam/http/internal/ClamEventsServlet.java
+++ b/src/main/java/org/apache/sling/clam/http/internal/ClamEventsServlet.java
@@ -68,7 +68,7 @@ import static org.apache.sling.clam.http.internal.ResponseUtil.json;
 )
 public class ClamEventsServlet extends HttpServlet implements JcrPropertyScanResultHandler {
 
-    private List<Client> clients = Collections.synchronizedList(new ArrayList<>());
+    private final List<Client> clients = Collections.synchronizedList(new ArrayList<>());
 
     private final AtomicLong counter = new AtomicLong(0);
 
@@ -102,7 +102,9 @@ public class ClamEventsServlet extends HttpServlet implements JcrPropertyScanRes
 
     private void addEvent(final String type, final String data) {
         final Event event = new Event(type, data);
-        clients.iterator().forEachRemaining(client -> client.addEvent(event));
+        synchronized (clients) {
+            clients.iterator().forEachRemaining(client -> client.addEvent(event));
+        }
     }
 
     private class Event {