[ZODB-Dev] Migrating classes in ZODB 3.5.1
Syver Enstad
syver at inout.no
Thu Nov 10 04:50:35 EST 2005
David Binger wrote:
>
> On Nov 9, 2005, at 9:21 AM, Syver Enstad wrote:
>
>>>> What I want to do is just update the persistent instance so that
>>>> it will
>>>> load from the new module/ new class after I have done a one time
>>>> update
>>>> of the database.
>>>>
>>>
>>> I fear this will not work.
>>>
>>> For efficiency reasons, the class designator (usually a
>>> module, classname tuple) is stored both in the object itself
>>> and in persistent references. While you will be able
>>> to modify the object's class the persistent references will
>>> only change when the containers are stored into the ZODB.
>>
>
> Is there something to prevent your update script from
> setting _p_changed = 1 on every persistent object that contains
> a reference to an instance of the moved class?
> I think that if you do that and commit and pack the database, the
> old module/class references will be purged.
>
> If you do this, the sys.modules hacking only has to happen
> in the update script.
That was exactly what I was doing but I can't get it to work in 3.5.1.
It works in 3.2 though. I don't want to upgrade online. I just want to
take the system down. Run a one time upgrade script. Start the system in
a new version with the moved/renamed modules/classes and not have to
have all kinds of funky translations and dummy modules in my source code.
More information about the ZODB-Dev
mailing list