You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by "Will Glass-Husain (JIRA)" <de...@velocity.apache.org> on 2007/08/24 07:08:30 UTC

[jira] Commented: (VELOCITY-556) Another concurrency issue with macros

    [ https://issues.apache.org/jira/browse/VELOCITY-556?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12522373 ] 

Will Glass-Husain commented on VELOCITY-556:
--------------------------------------------

patch applied - thanks!

> Another concurrency issue with macros
> -------------------------------------
>
>                 Key: VELOCITY-556
>                 URL: https://issues.apache.org/jira/browse/VELOCITY-556
>             Project: Velocity
>          Issue Type: Bug
>          Components: Engine
>    Affects Versions: 1.5
>            Reporter: Dima Tkach
>             Fix For: 1.6
>
>
> The symptom is similar to
> https://issues.apache.org/jira/browse/VELOCITY-514 and
> https://issues.apache.org/jira/browse/VELOCITY-24
> - the 'Null AST' errors show up in the logs under concurrency. 
> The issue is different however. First, unlike those two, this one only happens when the macro caching is ON (at least, I was never able to reproduce it with the cache off), and second, the issue only appears when there is a macro call from inside a macro. Like this:
> #macro A() A #end
> #macro AB() #A()B#end
> I have debugged this problem, and came up with this fix. I replaced Velocimacro.class file in velocity-1.5.jar with the one I compiled with my fix, and have been running it in production evironment for a while. It does indeed seem to have fixed the problem.
> Please feel free to use this fix if you like it.
> --- org/apache/velocity/runtime/directive/VelocimacroProxy.orig 2007-06-08 19:21:19.000000000 -0400
> +++ org/apache/velocity/runtime/directive/VelocimacroProxy.java 2007-06-08 19:22:10.000000000 -0400
> @@ -164,11 +164,14 @@
>              if (nodeTree != null)
>              {
> +                synchronized (this)
> +                {
>                  if ( !init )
>                  {
>                      nodeTree.init( context, rsvc);
>                      init = true;
>                  }
> +                }
>                  /*
>                   *  wrap the current context and add the VMProxyArg objects
> -- Dima

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
For additional commands, e-mail: dev-help@velocity.apache.org