[Zope] CST and disappearing variables

Chris McDonough chrism@zope.com
Sat, 29 Sep 2001 00:05:42 -0400


There is a bug in the RAM-based session data container implementation 
that causes this under load.  I've fixed it in a sandbox here (more or 
less), but I've not had time to package it up nicely... I am so far 
overdue in doing this that I'm not even going to say it'll be RSN.

In the meantime, please use an external data container.

Many apologies,

- C


Ron Bickers wrote:
> I'm running into what appears to be the same problem brought up by others
> several months ago regarding "random" disappearing of session variables
> under CoreSessionTracking.  After combing through the archives, there didn't
> appear to be any definitive answer for the problems.
> 
> I *think* my setup is fairly basic, but I can't figure out how to
> consistently reproduce the problem.  In fact, *I* haven't been able to make
> it happen at all, but every 1-2 out of 10 orders ends up with an empty cart,
> and the customer clearly remembers their cart was not empty.
> 
> I'm not using ZEO or anything fancy, just the RAM-based storage and cookies.
> I have the following setup for adding, updating, and viewing the cart:
> 
> Python Script 'add':
> 
> 'item' is a dictionary that is populated with simple numbers and strings.
> 'cart' is an array of 'items' and is stored like this:
> 
>   session = context.SDM.getSessionData()
>   cart = session.get('cart', [])
>   cart.append(item)
>   session.set('cart', cart)
> 
> Python Script 'update':
> 
>   A form passes in 'remove' as the cart index of the item to be removed:
> 
>   session = context.SDM.getSessionData()
>   cart = session.get('cart', [])
>   remove = REQUEST.form.get('remove', None)
>   if remove is not None:
>       del cart[remove]
>   session.set('cart', cart)
> 
> To place the items in a mail message for sending the order, I use the
> following simple Python Script and loop over it with dtml-in:
> 
>   session = context.SDM.getSessionData()
>   return session.get('cart', [])
> 
> This seems so simple, but seemingly randomly the above script returns []
> instead of what is in the cart.  There is another session variable (a
> dictionary 'custinfo') that is populated towards the end of the user's
> ordering process that has so far not been empty on any orders.
> 
> I wish I could provide more, but I don't know what else to try.  Maybe
> someone can see a flaw in the way I'm storing the cart that might cause CST
> to freak...like some persistence triggering problem or something like that.
> 
> _______________________
> 
> Ron Bickers
> Logic Etc, Inc.
> 
> 
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists - 
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )
> 


-- 
Chris McDonough                    Zope Corporation
http://www.zope.org             http://www.zope.com
"Killing hundreds of birds with thousands of stones"