From e9ffa013fcf36697519399ff7327754f2c883bbf Mon Sep 17 00:00:00 2001 From: Peter Kriens Date: Mon, 7 Nov 2022 15:46:21 +0100 Subject: [PATCH] Concurrent exception Running inject & getServices in parallel caused a Concurrent Modification Exception --- Signed-off-by: Peter Kriens Signed-off-by: Peter Kriens --- biz.aQute.launchpad/src/aQute/launchpad/Launchpad.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/biz.aQute.launchpad/src/aQute/launchpad/Launchpad.java b/biz.aQute.launchpad/src/aQute/launchpad/Launchpad.java index c151ceab2b..ce65a07e73 100644 --- a/biz.aQute.launchpad/src/aQute/launchpad/Launchpad.java +++ b/biz.aQute.launchpad/src/aQute/launchpad/Launchpad.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@ -96,7 +97,7 @@ public class Launchpad implements AutoCloseable { final List> trackers = new ArrayList<>(); final List frameworkEvents = new CopyOnWriteArrayList<>(); final Injector injector; - final Map, ServiceTracker> injectedDoNotClose = new HashMap<>(); + final Map, ServiceTracker> injectedDoNotClose = new ConcurrentHashMap<>(); final Set frameworkExports; final List errors = new ArrayList<>(); final String name;