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;
}