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<>();

Reply via email to