the referenced code, was moving an object from a session (ram zodb ) to a
persistent zodb, and making it explicitly not a cross database reference via
pickling. shouldn't pickling the object remove any database reference, all
the _p_ variables should be gone, and thus the pickle laundered object is
unattached to a db. ie.

>>> import transaction
>>> from ZODB.FileStorage import FileStorage
>>> from ZODB.DB import DB
>>> from persistent import Persistent
>>> class bar( Persistent ): pass
...
>>> a = bar()
>>> db = DB(FileStorage('tmp'))
>>> root = db.open().root()
>>> root['foo'] = a
>>> transaction.commit()
>>> root['foo']
<__main__.bar object at 0x8a530>
>>> root['foo']._p_jar
<Connection at 0062d090>
>>> root['foo']._p_oid
'\x00\x00\x00\x00\x00\x00\x00\x01'
>>> from cPickle import dumps
>>> from cPickle import loads
>>> x = loads(dumps(root['foo']))
>>> x
<__main__.bar object at 0x7352b0>
>>> x._p_jar
>>> x._p_oid
>>>

although the error message is clear. its not clear if the referenced code
section is responsible.

-kapil

On Mon, Jun 29, 2009 at 11:57 AM, Jim Fulton <j...@zope.com> wrote:

> Your application is creating cross-database references. The version of
> ZODB you're using on the ZEO server doesn't support packing databases
> with cross References. Upgrade your ZEO server to ZODB 3.8.1 or ZODB
> 3.9.
>
> Jim
>
>
> On Jun 29, 2009, at 11:54 AM, rafael wrote:
>
> > Hi,
> >
> > I don't know if you are aware of Plone Getpaid issue 209
> >
> > http://code.google.com/p/getpaid/issues/detail?id=209
> >
> > The title of this issue is not 100% correct. As I get this
> > corruption without restarting the server.  There are some tracebacks
> > over there.
> >
> > I think the following lines of the payment processor might have to
> > do with it
> >
> >  # make cart safe for persistence by using pickling
> >         order.shopping_cart = loads(dumps(cart))
> >         order.user_id = getSecurityManager().getUser().getId()
> >         order_manager.store(order)
> >
> >         # have to wait for the order to be created and the cart
> > added for this to work
> >         order.finance_workflow.fireTransition('authorize')
> >
> >         # save html for button - we'll destroy the cart later on
> >         html = button.cart_post_button(order)
> >
> >         # and destroy the cart
> >         cart_util.destroy(self.context)
> >
> >         return html
> >
> >
> >
> > Recently, I tried moving from zeo to filestorage to see if this was
> > related. I get the same error, but now instead of breaking my site
> > (givving errors for different actions), it seems it is just
> > preventing me from packing... The tracebak I get when packing is:
> >
> > Traceback (innermost last):
> >
> >       • Module ZPublisher.Publish, line 119, in publish
> >       • Module ZPublisher.mapply, line 88, in mapply
> >       • Module ZPublisher.Publish, line 42, in call_object
> >       • Module <string>, line 3, in _facade
> >       • Module AccessControl.requestmethod, line 64, in _curried
> >       • Module App.ApplicationManager, line 431, in manage_pack
> >       • Module ZODB.DB, line 624, in pack
> >       • Module ZODB.FileStorage.FileStorage, line 1352, in pack
> >       • Module ZODB.FileStorage.fspack, line 482, in pack
> >       • Module ZODB.FileStorage.fspack, line 228, in findReachable
> >       • Module ZODB.FileStorage.fspack, line 304, in
> > findReachableAtPacktime
> >       • Module ZODB.FileStorage.fspack, line 377, in findrefs
> >       • Module ZODB.serialize, line 645, in referencesf
> > KeyError: 'n'
> >
> > Thanks,
> >
> > Rafael
> > _______________________________________________
> > For more information about ZODB, see the ZODB Wiki:
> > http://www.zope.org/Wikis/ZODB/
> >
> > ZODB-Dev mailing list  -  ZODB-Dev@zope.org
> > http://mail.zope.org/mailman/listinfo/zodb-dev
>
> --
> Jim Fulton
> Zope Corporation
>
>
> _______________________________________________
> For more information about ZODB, see the ZODB Wiki:
> http://www.zope.org/Wikis/ZODB/
>
> ZODB-Dev mailing list  -  ZODB-Dev@zope.org
> http://mail.zope.org/mailman/listinfo/zodb-dev
>
_______________________________________________
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to