Renderer plugin rendering the wrong view.

I have a problem where the renderer plugin renders the wrong view.
I want to e-mail someone's password and use a view to render as the
email body.

My event handler has the following code:
lock name="EmailLock" timeout="5" type='exclusive' {
  arguments.Event.setLayout("Layout.Email");
  arguments.Event.setView("email/mailpassword");
  emailBody = getPlugin("renderer").renderLayout();
}

But if I then dump the emailBody the wrong view has been rendered. It
does render the correct layout if I explicitly set the layout in the
renderLayout().
The view that it does render is actually from the previous request.
The form where you enter your e-mail address.
If I dump Event.getCurrentView(), it has the right reference.
I don't have any interceptors or preHandler,postHandler methods. Also
nothing in the Main.cfc event handler.

RIVATECONTEXT
Struct
cbox_incomingContextHash
string 69A6B95F102C4067A809424BBEDA070C
currentLayout
string Layout.Email.cfm
currentRoute
string :handler/:action/
currentRoutedURL
string user/sendPassword/
currentView
string email/mailpassword
layoutoverride
boolean true

Another weird thing is that this works correctly on my development
server, but not on the production server.
This is probably due to caching being turned on on the production
server.

I've had this problem before and the only way to solve it was to put
the view body in a cfmail tag in the handler.

server details:
OS: Ubuntu 10.04 LTS
App server: Tomcat 6 (latest release)
CF: Railo 3.3.0.012
CB: coldbox 3.0.0

Ok that is too problematic as you see trying to do your own locks on something that internally is not locked. You need to render immediately so instead of setting stuff just render the combo.

Renderlayout(layout, view)