We are on JDK 1.5 and the memory model works for DCL if combined with
volatile key word. In JDK 1.5, volatile key word guarantees two threads see
the variable in the same order with the same value.
Thanks.
-- Lei
 

Velocity - Dev mailing list-2 wrote:
> 
> 
>     [
> https://issues.apache.org/jira/browse/VELOCITY-536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12486071
> ] 
> 
> Nathan Bubna commented on VELOCITY-536:
> ---------------------------------------
> 
> But the DCL'ed block only needs to happen once per instance.  Isn't the
> whole point to make the second thread skip the block completely?   We only
> need one thread per instance to go through, period.   Once one thread has
> started going through the block, it will finish and keep other threads out
> of there for that instance, order notwithstanding.
> 
> And again, this is not a constructor nor a completely abstract use of DCL
> that we're talking about.  This is a very specific use.
> 
>> Velocity Engine throws NullPointer Exception when two people click on the
>> same page at the same time for the first time
>> -----------------------------------------------------------------------------------------------------------------------
>>
>>                 Key: VELOCITY-536
>>                 URL: https://issues.apache.org/jira/browse/VELOCITY-536
>>             Project: Velocity
>>          Issue Type: Bug
>>          Components: Engine
>>    Affects Versions: 1.5
>>            Reporter: Lei Gu
>>         Attachments: 536-patch.txt, ASTDirective.java,
>> ASTSetDirective.java, VelocimacroProxy.java
>>
>>
>> Multi-thread concurrency issue
>> During our concurrency testing, we observed NullPointer exceptions being
>> thrown when two people hit the same page at the same time for the first
>> time. Upon further investigation, it turns out that we need to
>> synchronize the init method on ASTDirective, ASTSetDirective, and render
>> method on ASTSetDirective, and VelocimacroProxy.
>>  Basically, the problem is introduced as the following; when two threads
>> attempts to parse and render the same template at the same time. Thread1
>> finishes parsing first and proceeds to the render method call, while
>> thread 2 is still busy parsing and will overwrite the existing parse tree
>> that is being used by thread 1 for rendering purpose. Thus under
>> certainly condition a NullPointer exception will be thrown. 
> 
> -- 
> 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: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/-jira--Created%3A-%28VELOCITY-536%29-Velocity-Engine-throws-NullPointer-Exception-when-two-people-click-on-the-same-page-at-the-same-time-for-the-first-time-tf3506177.html#a9796621
Sent from the Velocity - Dev mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to