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