[Zope] Zope-2.8.1, LocalFS, and the importance of _p_jar

John Ziniti jziniti at speakeasy.org
Tue Nov 22 13:26:58 EST 2005


I've encountered the issue described here:

http://mail.zope.org/pipermail/zope/2005-August/161120.html

on a recently upgraded Zope using LocalFS.  I have tracked
down the issue to the fact that the object that LocalFS
"hands" to ZODB is a WrapperObject, and this object does
not have an oid.  This raises an AssertionError during
the _commit method of ZODB.Connection.

I have traced the code a little bit and I see that this
block of code will be avoided for these objects if the
objects do not appear in self._registered_objects, which
I can achieve by making sure that the object has no
_p_jar attribute.

If I comment out the line in the LocalFS object where
the wrapper object's _p_jar is set to the parent object's
_p_jar, everything works fine, with no (apparent)
problems. [ I tried also setting obj._p_oid = self._p_oid,
but then Zope has pickling problems trying to pickle
instances of the wrapper class ].

The problem I have with my "solution" is that I have
no clue what _p_jar is.

What is _p_jar used for within the Zope model?

What are the implications of having an object with
self._p_jar=None?

What are the implications of a transient object (not
stored in the ZODB but on the local filesystem), with
self._p_jar=None?

Thanks in advance for any information,
John Ziniti


More information about the Zope mailing list