Le 31/12/10 02:02, Godefroid Chapelle a écrit : > Hi, > > I have been fighting all day to understand a bug with the unregistration > of a utility from a local site. > > After unregistration, some instance is left in the _subscribers list of > the utilities AdapterRegistry in my local site. > > This avoids me to remove the code as it does leave a broken object. > > I have come to the conclusion that the code that first registered the > utility is the culprit : the utility itself is not persistent. > > It seems that the utility instance is unserialized at least two times > during unregistration, which leads (if I understand well) to two > different objects in memory. > > This breaks the unsubscription algorithm that is based on object identity. > > I naively tried to introduce the Persistent base class into the utility > calss. When I try to access the utility instance again, I get the error > mentioned in the subject of this mail : > > TypeError: ('object.__new__(SyncedLanguages) is not safe, use > Persistence.Persistent.__new__()',<function _reconstructor at > 0x1004297d0>, (<class > 'Products.LinguaPlone.vocabulary.SyncedLanguages'>,<type 'object'>, None)) > > If I understand well, the a posteriori introduction of Persistent cannot > happen alone. > > Can anyone tell me what I should do add to the class I try to make it > actually persistent ?
Let's try to make an understandable question : Can anyone tell me what I should add to the class to make it actually persistent, while making the old instances unserializable ? > > PS: It is late here, I hope I have not told too many silly things -- Godefroid Chapelle (aka __gotcha) http://bubblenet.be _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org https://mail.zope.org/mailman/listinfo/zodb-dev