From 6a884ff1737e58c04c74db1fb0e70064f4f292aa Mon Sep 17 00:00:00 2001 From: Philip Marzullo Date: Thu, 7 Feb 2019 10:37:52 -0500 Subject: [PATCH] Wrap data structures in SymmetricEngineHolder class with Collections.synchronized*() for thread safety issues. --- .../symmetric/web/SymmetricEngineHolder.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/symmetric-server/src/main/java/org/jumpmind/symmetric/web/SymmetricEngineHolder.java b/symmetric-server/src/main/java/org/jumpmind/symmetric/web/SymmetricEngineHolder.java index 546319479d..bfbfe47981 100644 --- a/symmetric-server/src/main/java/org/jumpmind/symmetric/web/SymmetricEngineHolder.java +++ b/symmetric-server/src/main/java/org/jumpmind/symmetric/web/SymmetricEngineHolder.java @@ -27,6 +27,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -51,7 +52,6 @@ import org.jumpmind.security.SecurityServiceFactory; import org.jumpmind.security.SecurityServiceFactory.SecurityServiceType; import org.jumpmind.symmetric.AbstractCommandLauncher; -import org.jumpmind.symmetric.ClientSymmetricEngine; import org.jumpmind.symmetric.ISymmetricEngine; import org.jumpmind.symmetric.SymmetricAdmin; import org.jumpmind.symmetric.SymmetricException; @@ -74,17 +74,17 @@ public class SymmetricEngineHolder { final Logger log = LoggerFactory.getLogger(getClass()); - private static Map staticEngines = new HashMap(); + private static Map staticEngines = Collections.synchronizedMap(new HashMap()); - private static Set staticEnginesStarting = new HashSet(); + private static Set staticEnginesStarting = Collections.synchronizedSet(new HashSet()); - private Map engines = new HashMap(); + private Map engines = Collections.synchronizedMap(new HashMap()); - private Set enginesStarting = new TreeSet(); + private Set enginesStarting = Collections.synchronizedSortedSet(new TreeSet()); - private Set enginesStartingNames = new TreeSet(); + private Set enginesStartingNames = Collections.synchronizedSortedSet(new TreeSet()); - private Map> enginesFailed = new HashMap>(); + private Map> enginesFailed = Collections.synchronizedMap(new HashMap>()); private boolean staticEnginesMode = false;