velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Geir Magnusson Jr." <ge...@optonline.net>
Subject Re: Velocity exits foreach loop in macro unpredictably, both 1.1 and 1.2-dev
Date Mon, 05 Nov 2001 16:43:34 GMT
On 11/5/01 10:25 AM, "Nick Bauman" <nick@cortexity.com> wrote:

> Forgive me my inability to come up with a consise example of how to
> reproduce the error, if I had one I probably could have fixed it myself. I
> can't force this to reproduce itself except under our load testing
> environment at my company. I'm now working to consisely reproduce the
> problem in another contrived situation. I'm asking the community if anything
> I'm showing "rings a bell" to a problem.
> 
> We use Velocity as a mail templating system. We recently discovered that in
> thousands of requests over a period of 5 minutes, the resulting merge()
> calls yield mysteriously incomplete emails. No exceptions are thrown,
> everything appears fine in the logs.
> 
> Our typical template looks like this:
> 
> -----8<-----
> 
> #* $Id: Texten_msftrxbx.vtl,v 1.1 2001/11/05 15:06:40 hvanlaar Exp $ *#
> #parse ( "functions.vtl" )
> 
> $queue.getEmailSubject()
> 
> Thank you for using Acme Center. Below is a copy of your chat session
> transcript for reference.
> 
> Topic: $!meeting.getTopic()
> 
> #drawStandardTextTranscript( $meeting )
> 
> ==========
> $!repId:$meeting.getMeetingId()
> 
> -----8<-----
> 
> the parsed template, entitled "functions.vtl" looks like this:
> 
> -----8<-----
> 
> ...[other stuff]...
> 
> #macro( drawStandardTextTranscript $meeting )
> #foreach( $event in $meeting.getAllEvents() )
> #set( $yapper = $meeting.getParticipation($event.getFromId()) )
> #if( $event.getClass().getName().equals($urlEvent) )
> $yapper.getName(): $event.getStoredData()
> #elseif( $event.getClass().getName().equals($chatEvent) )
> #if($repRole.equals($yapper.getRole()) )
> #set( $repId = $yapper.getParticipantId() )
> #end
> $yapper.getName(): $event.getStoredData()
> #end
> #end
> #end
> 
> ...[other stuff]...
> 
> -----8<-----
> 
> The problem is the resulting output ocassionally (5-25% of the time) will
> not contain all $event.getStoredData() that it should. However, all the
> other stuff in the template will look fine: the footer and everything else.
> So, for some of the mails, there should be 15 lines of text, but we only see
> one or two. It's very strange and I cannot reproduce it outside of our load
> environment.
> 
> Question is: is it possible some wierd threading behavior is ocurring? I'm
> not reusing a new VelocityContext for each call to merge() I'm making a new
> one each time. All other settings in Velocity are default except the
> template root, which I define.
> 
> Thanks for any insights.

Yeek :)  We'll find it...

1) What version of Velocity?

2) what is the Class returned from '$meeting.getAllEvents()'?

-- 
Geir Magnusson Jr.                                     geirm@optonline.net
System and Software Consulting
"They that can give up essential liberty to obtain a little temporary safety
deserve neither liberty nor safety." - Benjamin Franklin



--
To unsubscribe, e-mail:   <mailto:velocity-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:velocity-user-help@jakarta.apache.org>


Mime
View raw message