-----BEGIN PGP SIGNED MESSAGE-----
Sylvain Viollon wrote:
> I like to refactor my code and often make broken interfaces:
> On a ZODB object I do an alsoProvide of an interface.
> Now I remove the corresponding code for that interface (and that
> object but it is not required) and I restart my server. I didn't
> moved them, I just removed them. (If I moved them I would use
> zodbupdate, and have no problem).
> But let say I need to remove that object from ZODB. Unpickling that
> object fail in the custom set_state of zope.interface with the well known
> line 470, in add_extendor for i in provided.__iro__:
> AttributeError: type object 'IKeyManager' has no attribute '__iro__'
> Because it expect to get an interface to restore the alsoProvides,
> and got a broken interface instead (which is just like a regular
> broken object).
> And you cannot access your ZODB anymore, since this broken object, with
> its broken interface is unpickled when its container is.
> I found a way 'to prevent' this error, by adding an attribute
> __iro__ which is an empty tuple to OFS.Uninstalled.BrokenClass.
> That let me load this broken object, and delete it (along with the
> to the broken interface).
> I think it is the good behavior, and since you cannot modify a broken
> object, if you put back the code after, your object will work again,
> with its interface provided as well.
> If we can fix this problem in Zope 2, (with this solution, or an another),
> I would be the most happy user of all :).
Your strategy seems pretty reasonable to me. Please file a bug with
Tres Seaver +1 540-429-0999 tsea...@palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
-----END PGP SIGNATURE-----
Zope-Dev maillist - Zope-Dev@zope.org
** No cross posts or HTML encoding! **
(Related lists -