[Zope] ZODB bug? (Surrogate instance '_p_oid')

Dieter Maurer dieter@handshake.de
Mon, 31 Mar 2003 22:43:08 +0200


Bo M. Maryniuck wrote at 2003-3-31 10:34 +0200:
 > Can somebody explain what this error means? I think this sounds like
 > a bug in ZODB somewhere... :(
 > 
 > Zope: 2.6.1
 > OS: Linux SuSE 8.0 Pro
 > 
 > ==============================================
 > Traceback (innermost last):
 > 
 >     * Module ZPublisher.Publish, line 102, in publish
 >     * Module Zope.App.startup, line 200, in commit
 >     * Module ZODB.Transaction, line 261, in commit
 >     * Module ZODB.Transaction, line 392, in _commit_error
 > 
 > AttributeError: Surrogate instance has no attribute '_p_oid'

When an object needs to have special treatment at transaction
commit/abort, it registers either itself or a surrogate
object with the transaction.

The transaction expects the object registered to have
a "_p_jar" attribute. It calls this object's
"tpc_begin/finish/vote/commit/abort" method when the
transaction commits/aborts.

When "_p_jar" is a ZODB connection (the most usual case),
the connection expects the object to have a "_p_oid" attribute.

Apparently, one of your objects registers a surrogate
with a ZODB connection as "_p_jar" but without a "_p_oid".
This is definitely a bug. You must find this object and fix its
class.


Dieter