On 10/26/06, Jürgen Herrmann <Juergen.Herrmann@xlhost.de> wrote:
On Thu, October 26, 2006 14:53, Marco Bizzarri wrote:
Storing persistent object in object outside of ZODB can incur in the problem of passing object(s) between threads, and, therefore, passing one object which is related to a connection on the ZODB to another context with a different connection.
ok, this is probably the problem here, so would haveing a cache dict for each thread help? there are only about 50-100 containers so the memory overhead would be neglible compared to the performance gained.
Yes, this should probably resolve your issue.
Also, AFAIK, keep in mind _v_ attributes are not involved in transaction machinery of Zope. This means that if you have an error inside you transaction after you modified the _v_ cache, you will have the cache modified even tough the transaction has been aborted.
not a real problem as class instance containers are very static.
I understand, we hit this problem while caching object obtained from database rows... and in case of failure cache became unreliable. I'm keeping the answer on the ML, if you don't mid. -- Marco Bizzarri http://iliveinpisa.blogspot.com/