On May 11, 2012, at 4:26 PM, Adam Heath wrote: >>>>> @@ -177,10 +184,18 @@ public class GroovyUtil { >>>>> Class<?> scriptClass = parsedScripts.get(script); >>>>> if (scriptClass == null) { >>>>> scriptClass = loadClass(script); >>>>> - if (Debug.verboseOn()) Debug.logVerbose("Caching Groovy script: " >>>>> + script, module); >>>>> - parsedScripts.put(script, scriptClass); >>>>> + synchronized (parsedScripts) { >>>>> + Class<?> scriptClassCached = parsedScripts.get(script); >>>>> + if (scriptClassCached == null) { >>>>> + if (Debug.verboseOn()) { >>>>> + Debug.logVerbose("Caching Groovy script: " + script, module); >>>>> + } >>>>> + parsedScripts.put(script, scriptClass); >>>>> + } else { >>>>> + scriptClass = scriptClassCached; >>>>> + } >>>>> + } >>>>> } >>>>> - > > This is DCL.
Oh no, you are wrong Adam: it would be DCL if scriptClass was a shared variable, which is not: it is a *local* variable. Jacopo