[Zope] Help interpreting traceback? ZODB Couldn't load state

Dieter Maurer dieter at handshake.de
Wed Mar 16 16:01:00 EST 2005


Jean Jordaan wrote at 2005-3-15 11:39 +0200:
>...
>Unauthorized: The container has no security assertions. Access to 'id' 
>of (Query instance at 40596140) denied.
> ...
>When I see the above in the browser, I see the following in the log:
>
>2005-03-15T09:56:19 ERROR(200) ZODB Couldn't load state for 0x03ad7e
>Traceback (most recent call last):
>   File "/home/upfront/Zope-2.7.3-0/lib/python/ZODB/Connection.py", line 
>600, in setstate
>     self._set_ghost_state(obj, p)
>   File "/home/upfront/Zope-2.7.3-0/lib/python/ZODB/Connection.py", line 
>639, in _set_ghost_state
>     state = unpickler.load()
>AttributeError: 'bool' object has no attribute '__dict__'

Nevertheless, the "Unauthorized" and the traceback do not
go together but describe different problems -- unless
you use "try ... except" and hide primary exceptions...


It is very strange that the unpickling is looking for a "__dict__".
It almost looks like a too older Python version (though this is not
very likely).
Python 2.3 comes with pickletools. You can use them to "disassemble"
pickles for easier inspection.
This may provide some hints for the problem.

> ...
>The following test script finds 3 paths, but there's something wrong
>with the returned objects. For example, they don't have ids! obj.getId()
>acquires the container's id.
>
>for p in context.Catalog(meta_type='Query'):
>   try:
>     obj = p.getObject()
>     x = obj.id
>   except:
>     r.append( p.getObject() )

Analyse such an object in detail (in an interactive interpreter).

-- 
Dieter


More information about the Zope mailing list