This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 75bf04b Make double checked locking in factory getter methods of AbstractCamelContext thread-safe. (#4554) 75bf04b is described below commit 75bf04b4af0d280a498ca597f44ee2aa09aa8b55 Author: Pascal Schumacher <pascalschumac...@gmx.net> AuthorDate: Tue Nov 3 06:40:47 2020 +0100 Make double checked locking in factory getter methods of AbstractCamelContext thread-safe. (#4554) --- .../java/org/apache/camel/impl/engine/AbstractCamelContext.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java index cf50377..60499e6 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java @@ -199,15 +199,15 @@ public abstract class AbstractCamelContext extends BaseService private final ThreadLocal<Boolean> isStartingRoutes = new ThreadLocal<>(); private final ThreadLocal<Boolean> isSetupRoutes = new ThreadLocal<>(); private final Map<String, FactoryFinder> factories = new ConcurrentHashMap<>(); - private FactoryFinder bootstrapFactoryFinder; + private volatile FactoryFinder bootstrapFactoryFinder; private ConfigurerResolver bootstrapConfigurerResolver; private final Map<String, RouteService> routeServices = new LinkedHashMap<>(); private final Map<String, RouteService> suspendedRouteServices = new LinkedHashMap<>(); private final Object lock = new Object(); private final RouteController internalRouteController = new InternalRouteController(this); private final InternalRouteStartupManager internalRouteStartupManager = new InternalRouteStartupManager(this); - private DeferServiceFactory deferServiceFactory; - private AnnotationBasedProcessorFactory annotationBasedProcessorFactory; + private volatile DeferServiceFactory deferServiceFactory; + private volatile AnnotationBasedProcessorFactory annotationBasedProcessorFactory; private final List<RouteStartupOrder> routeStartupOrder = new ArrayList<>(); private final StopWatch stopWatch = new StopWatch(false); private final Map<Class<?>, Object> extensions = new ConcurrentHashMap<>();