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

pascalschumacher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 380cc95cfa541d2502bd748e163a6bbaecc14b92
Author: PascalSchumacher <pascalschumac...@gmx.net>
AuthorDate: Wed Feb 3 20:32:44 2021 +0100

    ExpressionClause#initPredicate: Fix race condition in double-checked 
locking object initialization
---
 .../src/main/java/org/apache/camel/builder/ExpressionClause.java  | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClause.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClause.java
index 1e002ef..6a2609d 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClause.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClause.java
@@ -1004,12 +1004,14 @@ public class ExpressionClause<T> implements Expression, 
Predicate {
             synchronized (this) {
                 if (pred == null) {
                     Expression newExpression = getExpressionValue();
+                    Predicate newPredicate;
                     if (newExpression == null) {
-                        pred = 
delegate.getPredicateType().createPredicate(context);
+                        newPredicate = 
delegate.getPredicateType().createPredicate(context);
                     } else {
-                        pred = 
ExpressionToPredicateAdapter.toPredicate(newExpression);
+                        newPredicate = 
ExpressionToPredicateAdapter.toPredicate(newExpression);
                     }
-                    pred.initPredicate(context);
+                    newPredicate.initPredicate(context);
+                    pred = newPredicate;
                 }
             }
         }

Reply via email to