Hash: SHA1

Sylvain Viollon wrote:
> Hello,
>    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
>    error:
>    File 
> ".../zope.interface-3.5.3-py2.6-linux-i686.egg/zope/interface/adapter.py",
>    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 
> reference
>    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
your patch.

- --
Tres Seaver          +1 540-429-0999          tsea...@palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org


Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope )

Reply via email to