[Zope-dev] [Solved] Cannot load state: None has no attribute 'load'

Chris McDonough chrism@zope.com
Wed, 15 Aug 2001 07:44:57 -0400


I'm glad you solved this for your application, Dieter... I'm still 
struggling to try to pin it down for mine... I thought we had it licked 
after Shane showed me how to properly close a ZODB connection in CST, 
but unfortunately, the problem was unrelated.  :-(

Dieter Maurer wrote:
> Recently, I reported a strange effect where Zope suddenly
> and without apparent reason reports lots of
> "Could not load state: None object has no attribute 'load'.
> 
> I think, I now understand why this happens and can work around it:
> 
>   We use GUF (Generic User Folder) to maintain users in
>   an Oracle database. Although Oracle is quite fast
>   with the kind of queries involved in authentication
>   (with others it is extremely slow), the complete
>   authentication process was slow: 0.2 to 0.5 seconds
>   I wanted to improve on this and implemented a user cache.
> 
>   For simplicity and speed I cached the completely wrapped
>   user object.
>   Not a good idea, if one thinks carefully about it!
> 
>   Apparently, everything worked well, but suddenly, non-deterministically
>   after many hours, Zope reports "Could not load..." in the log
>   file and raises really erratic exceptions in Web requests....
> 
> 
> What have I learned....
> 
>   *NEVER* cache persistent objects (or objects referencing a
>   persistent one!).
> 
>   They contain a hidden reference to the ZODB connection
>   that created them (and that is used to load subobjects that
>   have not yet been loaded).
>   This reference is valid only in the thread (and probably
>   also only the request) that made it.
> 
>   Invalid uses can show very interesting effects, like
>   the above "Could not load...", "TypeError, 'Results' instances
>   do not support subscription", "AttributeError, '__len__'", .....
> 
> 
> What will I do:
> 
>   I will cache the bare non-persistent user object (after I scrapped
>   all acquisition wrappers). I will rewrap it into the
>   UserFolder context, when the cached object is looked up.
> 
> 
> Special thanks to Chris for his help with the original problem report.
> 
> 
> Dieter
> 
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev@zope.org
> http://lists.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists - 
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope )
> 


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