[ZPatterns] RE: [Zope] AttributeError: 'None' object has no attribute 'load'

Jean Jordaan [email protected]
Wed, 22 Nov 2000 10:47:32 +0200


Hi Dieter

Yes, I recall now I've seen it mentioned.

FWIW, here's a summary of the substantive things I found in the
archive ..

In this thread:
http://lists.zope.org/pipermail/zope-dev/2001-May/011272.html
between Chris Withers and Chris McDonough, ChrisM concludes as
follows:

"I actually expected all along that it was mounted storage objects
causing the error"

I'm not using mounted storage, and get the error on various kinds
of extension classes. PortalMember and PersistentUserSource below
(see [1]) belong to the LoginManager Membership product
("version.txt": Membership 0.7.8). Customer below is a normal ZClass,
created through the web. The only thing that I can think of which all
of these have in common, is that they use ZPatterns. Customer
instances are stored in a ZPatterns Rack in the ZODB. I'm using
ZPatterns-0-4-3p2.

ChrisW concludes that the consequences are only aesthetic and
ignorable, but in my case it does present the user with a Zope error,
and oblige him/her to reload the page :(

In this thread:
http://lists.zope.org/pipermail/zope-dev/2001-August/012834.html
you report solving the
"Could not load state: None object has no attribute 'load'"
problem for an application storing user information in an Oracle
database using Generic User Folder. In that case, the problem was
caching persistent objects, and the solution was to not cache them.

In my case, I'm not doing any caching, so if it's happening, it
must be within the Zope (or ZPatterns?) machinery.

ChrisM responds: "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."

I'm not using CST, so I'd guess the problem is unrelated in my case
as well.

In this thread:
http://lists.zope.org/pipermail/zope-dev/2001-February/009900.html
Steve Alexander tells Chris Withers: "I hazard a guess that you're
changing a mutable attribute of a persistent object, without doing
a _p_changed=1 on your persistent object." which goes right over
my head .. but it does remind me of discussions on the ZPatterns list.

Google also turns up
http://lists.zope.org/pipermail/zope-checkins/2001-October/007928.html
from the zope-checkins list, which as of 4 October still shows the
problem as unsolved, and still in relation to mounted storages / Core
Session Tracking:

  - Solve "None has no attribute 'load'" errors when accessing a
    mounted storage under load.  If you see this error, please help!

>From the above, the only contribution I can make is to suggest that
the problem is not specific to CST or mounted storages, and that
you and Steve Alexander seem to be on the right track: Persistent
objects seem to be retaining invalid ZODB references, for some
reason.

Regards,
Jean

[1]
>>> import Zope
>>> app = Zope.app()
>>> ob = app._p_jar['\000\000\000\000\000\001\002\350']
>>> print ob.id
jean
>>> print ob.__class__
<extension class *QpViCIG2oty3+jIn5k03UQ==.PortalMember at 8ac6fe8>
>>> ob = app._p_jar['\000\000\000\000\000\000E\326']
>>> print ob.id
UserSource
>>> print ob.__class__
<extension class
Products.Membership.PersistentUserSource.PersistentUserSource at 84f1878>
>>> ob = app._p_jar['\000\000\000\000\000\000\257\265']
>>> print ob.id
1045
>>> print ob.__class__
<extension class */V7clPOreJUsA6zwPWjjCA==.Customer at 8aaeaf0>


-----Original Message-----
From: Dieter Maurer [mailto:[email protected]]
Sent: Thursday, November 22, 2001 12:45 AM
To: Jean Jordaan
Cc: [email protected]
Subject: Re: [Zope] ZCatalog: AttributeError: 'None' object has no
attribute 'load'


Jean Jordaan writes:
 > I've been getting these for a long time. A retry succeeds, but
 > it's ugly if it happens to a client. It also happens pretty
 > often (say eg. every 20th time I upload something to Zope).
 > I have packed the database, but that didn't help. Has anyone
 > else noticed this, and made it go away?
 >
 > ------
 > 2001-11-21T07:09:19 ERROR(200) ZODB Couldn't load state for
 > '\000\000\000\000\000\001\002\350'
 > Traceback (innermost last):
 >   File /usr/local/zope/2-3-0/lib/python/ZODB/Connection.py, line 508, in
 > setstate
 > AttributeError: 'None' object has no attribute 'load'
I saw it and Chris McDonough described it.

Search the mailing list archives. You will find detailed descriptions.

Not sure, however, if your case is covered or different...


Dieter