On Wed, Nov 05, 2008 at 03:59:07PM +0100, Christian Theune wrote:
> On Wed, 2008-11-05 at 16:00 +0200, Marius Gedminas wrote:
> > On Wed, Nov 05, 2008 at 11:48:35AM +0100, Christian Theune wrote:
> > > On Wed, 2008-11-05 at 11:31 +0100, Laurence Rowe wrote:
> > > > Broken objects occur when the class for a pickled object cannot be 
> > > > imported. To change the location of a class, you need to provide an 
> > > > alias at the old location so that the object can be unpickled, i.e. 
> > > > MyOldClassName = MyNewClassName. You can only remove MyOldClassName 
> > > > after you have updated all of the pickles (with your code below).
> > > 
> > > Note: We made a relatively good experience by removing those symbols
> > > from their original modules and provide a generation which first sets up
> > > dummies, then runs migration code to remove/rebase those objects and
> > > then remove the dummies again.
> > 
> > How do you do that?  Monkey-patching?
> 
> Yes. Monkey-patching *and* monkey-unpatching.

Thought so.

By the way, this has a potential failure mode when you need to evolve
more than one generation, and a previous generation script needs to
access those objects in the old location before your new generation
script sets up the dummies.

Marius Gedminas
-- 
What can I do with Python that I can't do with C#?  You can go home on time at
the end of the day.
        -- Daniel Klein

Attachment: signature.asc
Description: Digital signature

_______________________________________________
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