[Zope] TypeError: Cache values must be persistent objects.

Dieter Maurer dieter at handshake.de
Thu Jun 23 00:29:29 EDT 2005


Nikko Wolf wrote at 2005-6-21 15:08 -0600:
>I'm trying to develop a filesystem-based Product (here 'ABCD') and 
>unless I remove the "ABCD" folder from my Products directory, I get the 
>following error IN THE MANAGEMENT INTERFACE.
>
>Is it possible to determine what's causing the problem?  After multiple 
>restarts, I did a global "Find" in the ZMI and (I think) deleted all 
>objects of type "ABCD Content".  But still the problem persists (no pun 
>intended).
> ...
>     self._cache[oid] = object
>TypeError: Cache values must be persistent objects.

Looks as if you had changed the class structure:

   An object that formerly was persistent (when it was stored
   in the ZODB) now gets a class which is no longer
   derived from "Persistence".

   Note that the ZODB identifies the class of an object
   by "modulepath, classname". You should ensure
   that the class identified in this way always derives
   from "Persistence" (and that is exists).

To find out what object this is, you catch the error and
look at "object.__class__".

> ...
>   Module ZODB.Connection, line 227, in _persistent_load
>    - __traceback_info__: ('\x00\x00\x00\x00\x00\x009^', 
>('Products.ABCD.XML_File', 'XML_File'))
>TypeError: Cache values must be persistent objects.

As we see, catching is not necessary.
The traceback is enough ;-)

"Products.ABCD.XML_File" lost its "Persistence" inheritance...

-- 
Dieter


More information about the Zope mailing list