Re: [ZODB-Dev] Plone Get Paid and zodb corruption

2009-07-06 Thread Kapil Thangavelu
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


Re: [ZODB-Dev] Plone Get Paid and zodb corruption

2009-06-29 Thread Jim Fulton
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