From cb2c67e8085107e7c21dfdf20187e36d1bd5d864 Mon Sep 17 00:00:00 2001 From: Pascal Davoust Date: Mon, 22 Mar 2021 09:37:14 +0100 Subject: [PATCH] [WW-5121] Fix: remove contention during Scope.SINGLETON injection --- .../java/com/opensymphony/xwork2/inject/Scope.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/opensymphony/xwork2/inject/Scope.java b/core/src/main/java/com/opensymphony/xwork2/inject/Scope.java index 86592bbe1e..3974d6c8b8 100644 --- a/core/src/main/java/com/opensymphony/xwork2/inject/Scope.java +++ b/core/src/main/java/com/opensymphony/xwork2/inject/Scope.java @@ -44,15 +44,17 @@ InternalFactory scopeFactory(Class type, String name, @Override InternalFactory scopeFactory(Class type, String name, final InternalFactory factory) { return new InternalFactory() { - T instance; + volatile T instance; public T create(InternalContext context) { - synchronized (context.getContainer()) { - if (instance == null) { - instance = InitializableFactory.wrapIfNeeded(factory).create(context); + if (instance == null) { + synchronized (context.getContainer()) { + if (instance == null) { + instance = InitializableFactory.wrapIfNeeded(factory).create(context); + } } - return instance; } + return instance; } @Override