[Zope-dev] InvalidObjectReference: Attempt to store an object from
a foreign database connection
Christian Heimes
heimes at faho.rwth-aachen.de
Mon Mar 29 06:28:52 EST 2004
There is a problem regarding plone, cmf and the quickinstaller tool. I'm
getting an InvalidObjectReference error after reinstalling a product
with the quickinstaller a second time or several times. It looks like
the error happens only after I visited the plone ui at least once but
that could be concurrence. Only restarting zope stops the error until
the next occurance.
Version: Python 2.3.3 (Debian testing)
Zope 2.7 (CVS branch)
CMF 1.4 (CVS)
Plone 2.0
Traceback (innermost last):
Module ZPublisher.Publish, line 104, in publish
Module Zope.App.startup, line 224, in commit
Module ZODB.Transaction, line 233, in commit
Module ZODB.Transaction, line 348, in _commit_objects
Module ZODB.Connection, line 419, in commit
- __traceback_info__: (('Products.CMFCore.ActionInformation',
'ActionInformation'), '\x00\x00\x00\x00\x00\x00\x9e\xe3', '')
InvalidObjectReference: Attempt to store an object from a foreign
database connection
I tried to get the object by starting zope with zopectl debug and using
app._p_jar['\x00\x00\x00\x00\x00\x00\x9e\xe3'] but the object wasn't
available so it seems to be a new object that is saved the first time.
After changing the pickler from cPickle to pickle:
Traceback (innermost last):
Module ZPublisher.Publish, line 104, in publish
Module Zope.App.startup, line 224, in commit
Module ZODB.Transaction, line 233, in commit
Module ZODB.Transaction, line 348, in _commit_objects
Module ZODB.Connection, line 419, in commit
- __traceback_info__: (('Products.CMFCore.ActionInformation',
'ActionInformation'), '\x00\x00\x00\x00\x00\x00\xa2G', '')
Module pickle, line 231, in dump
Module pickle, line 293, in save
Module pickle, line 663, in save_dict
Module pickle, line 695, in _batch_setitems
Module pickle, line 278, in save
InvalidObjectReference: Attempt to store an object from a foreign
database connection
pickle.save():278 is calling self.persistent_id(obj) which is patched to
call coptimizations.new_persistent
(pickler.persistent_id=new_persistent_id(self, stack)) in
ZODB.Connection.commit(). The exception itself is raised by
persistent_id_call() because of (jar != Py_None && jar != self->jar) is
true.
Debugging so deep into the zodb is a bit over my knowledge so I would be
glad if someone could dig in, too. :)
Christian
PS: CC to plone-devel and cmf
More information about the Zope-Dev
mailing list