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

amichai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/aries-rsa.git

commit 85f26da888f81bb7f15c84ad9f3b15718d63f7d3
Author: Amichai Rothman <[email protected]>
AuthorDate: Mon Nov 11 18:48:21 2019 +0200

    Fix TopologyManagerImport concurrency
---
 .../rsa/topologymanager/importer/TopologyManagerImport.java    | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git 
a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
 
b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
index 01f1968..09223e5 100644
--- 
a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
+++ 
b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
@@ -19,9 +19,9 @@
 package org.apache.aries.rsa.topologymanager.importer;
 
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
@@ -47,11 +47,11 @@ import org.slf4j.LoggerFactory;
 public class TopologyManagerImport implements EndpointEventListener, 
RemoteServiceAdminListener {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(TopologyManagerImport.class);
-    private ExecutorService execService;
 
+    private final ExecutorService execService;
     private final BundleContext bctx;
-    private Set<RemoteServiceAdmin> rsaSet;
-    private boolean stopped;
+    private final Set<RemoteServiceAdmin> rsaSet;
+    private volatile boolean stopped;
 
     /**
      * List of Endpoints by matched filter that were reported by the 
EndpointListener and can be imported
@@ -64,7 +64,7 @@ public class TopologyManagerImport implements 
EndpointEventListener, RemoteServi
     private final MultiMap<String, ImportRegistration> importedServices = new 
MultiMap<>();
     
     public TopologyManagerImport(BundleContext bc) {
-        this.rsaSet = new HashSet<>();
+        this.rsaSet = new CopyOnWriteArraySet<>();
         bctx = bc;
         execService = new ThreadPoolExecutor(5, 10, 50, TimeUnit.SECONDS, new 
LinkedBlockingQueue<Runnable>());
     }

Reply via email to