Hello everyone,

I'm sporadically getting the following error thrown as a result of a routine I've written.

InvalidObjectReference: Attempt to store a reference to an object from a separate connection to the same database or multidatabase.

I can often run this routine several times without a problem.  After a fresh Zope (re)start, this error never happens on the first run.  Once the problem does occur I need to restart Zope to make it go away.

Can anyone tell me what this error actually means, and what bad practices could cause it?

I've found a couple of hits about "InvalidObjectReference: Attempt to store an object from a foreign database connection error" in the archives, but I don't know how close this is to my problem.

An example traceback would be:
2006-11-08T16:47:49 ERROR Zope.SiteErrorLog http://localhost:8080/WebSites/dev/test1/manage_publish
Traceback (innermost last):
  Module ZPublisher.Publish, line 115, in publish
  Module ZPublisher.mapply, line 88, in mapply
  Module ZPublisher.Publish, line 41, in call_object
  Module Products.DWT.WebBase , line 756, in manage_publish
  Module Products.DWT.WebBase, line 724, in manage_publish
  Module OFS.CopySupport, line 564, in _getCopy
  Module transaction._manager, line 110, in savepoint
  Module transaction._transaction, line 295, in savepoint
  Module transaction._transaction, line 292, in savepoint
  Module transaction._transaction, line 675, in __init__
  Module ZODB.Connection, line 1012, in savepoint
  Module ZODB.Connection, line 526, in _commit
  Module ZODB.Connection, line 553, in _store_objects
  Module ZODB.serialize, line 407, in serialize
  Module ZODB.serialize, line 416, in _dump
  Module ZODB.serialize, line 341, in persistent_id
InvalidObjectReference: Attempt to store a reference to an object from a separate connection to the same database or multidatabase

I'm only dealing with one ZODB, so perhaps this is a multiple connection issue (although I have no idea how/why).

In case it helps to know the context of the problem, I have a collection of objects I've written:

1) WebSite, based on OrderedFolder
2) WebSection, based on OrderedFolder
3) WebPage, based on ZopePageTemplate
4) WebImage, based on Image.

Each of these classes inherit a common base of functionality from a WebBase class.  The manage_publish() method, defined in WebBase, copies the current object (one of #'s 2-4) to the same relative path within the context of another WebSite.  This gives me a basic "dev" to "live" publishing process.

Perhaps the most complex part of this routine is its ability to recurse.  For example, a WebPage on the dev WebSite will first call its parent WebSection's manage_publish() if the parent WebSection doesn't exist on the live WebSite.

Other things do happen during the process which might be causing this InvalidObjectReference, but if I can get a grip on what kinds of programming offenses causes this exception then I can make a more educated review of my code.  I will happily provide a copy of the source if anyone is interested or thinks it will be useful.

Thank you for any help or advice!
Zope maillist  -  Zope@zope.org
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to