[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