On Nov 9, 2005, at 10:37 AM, Jeremy Hylton wrote:

How do you find all the references?  It seems like you would need to
execute a transaction that iterated over every object in the storage
and searched the pickle for references to the class.

You do need to do this to find the references (using referencesf()?),
but it doesn't necessarily need to happen in one giant transaction.
The script just needs to (load and) re-pickle every instance with a reference
while the sys.modules hack is in place.  Commit each referring instance
in a new transaction if you like, and conflict errors should
not be a problem.

I can imagine the update transaction taking a really long time to run,
which increases the possibility that it will get a conflict error.
Maybe it's a resolvable conflict, but not using the current mechanism.

For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to