On Tuesday 26 March 2002 06:26, Oleg Assovski wrote:
> >We had the exact same issues. We are using
> >Apache::AxKit::Plugins::Session and that is where the problem
> >was. If you are using Apache::AxKit::Plugins::Session, this is a diff
> >of our patch:
> >
> >54c54
> ><             my $res = tieHash( undef, \%flex_options );
> >---
> >
> >>             my $res = tieHash( undef, \%flex_options, \%session);
>
> IMHO key is here ^^^^^^^
> Apache::Session and its derivatives saves changes in session hash to
> storage only when hash is untied. If not - changes are lost.

Yep, exactly, which is precisely why we made this fix to the plugin. The fact 
that %session was a package global in the original code meant that each child 
simply never untied the hash, thus destroy was never called, and that lead 
the underlying serializer never to flush its I/O buffers. You can verify how 
this works by taking a look at Apache::Session::Storage::File and see what 
happens there. 

Anyway, you can't store refs to the session hash in globals, it breaks the 
whole system. This also goes for code in taglibs etc. If you keep a ref to 
the session hash, you WILL break the session management system! This is going 
to be true for any mechanism that uses Apache::Session behind the scenes 
(though I guess it would be possible to rewrite some of the Storage:: modules 
to fix it, but there would be a possibly nasty performance hit for doing so).
>
>
>       Ciao, OLeG
> -----------------------------------------------------------------
> Oleg Assovski, Development dept., Bitcom Ltd., Moscow
> We make few little bugs,
> we compensate with a lot of big ones
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

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

Reply via email to