Author: cbrisson Date: Tue Jun 26 02:42:16 2018 New Revision: 1834392 URL: http://svn.apache.org/viewvc?rev=1834392&view=rev Log: [tools] Fix initialization race condition VELTOOLS-157
Modified: velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/Toolbox.java Modified: velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/Toolbox.java URL: http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/Toolbox.java?rev=1834392&r1=1834391&r2=1834392&view=diff ============================================================================== --- velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/Toolbox.java (original) +++ velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/Toolbox.java Tue Jun 26 02:42:16 2018 @@ -102,14 +102,20 @@ public class Toolbox implements java.io. public Object get(String key, String path, Map<String,Object> context) { - Object tool = null; - if (cache != null) - { - tool = getFromCache(key, path); - } + /* try the cache */ + Object tool = getFromCache(key, path); + if (tool == null) { - tool = getFromInfo(key, path, context); + /* synchronize and try again */ + synchronized (this) + { + tool = getFromCache(key, path); + if (tool == null) + { + tool = getFromInfo(key, path, context); + } + } } return tool; }