Brian Lloyd wrote:
A new bug entry was added with the following information:
Title: Ghost ZClasses
At: http://classic.zope.org:8080/Collector/1676/sview
Submitter: lalo
Email: lalo@hackandroll.org
Description: Some ZClasses in a ZODB migrated from 2.1.6 did not handle the migration well. Their instances were reported as broken, till I removed the Product, when the instances started working (but with no icon, factory or constructor).
I would have to guess that the cause may be a product that was supplying a base class wasn't installed.
I tried flushing the cache, packing the database and restarting Zope, to no avail. Then I found there was a global registry for ZClasses; looks like somehow, when the classes were deleted, they didn't _unregister().
I finally tired of not being able to create banners and manually removed the classes (via Python) from root()['ZGlobals']. Not that this is a fix, but it's something other people with the same problem can do if they're brave (insane?) enough.
This is actually expected behavior: if the ZClass itself is broken, Zope can't even figure out what class ID it was supplying. ZClasses break when the base classes disappear. At that point, there's no way to unregister from ZGlobals. This is a Hard Problem. At the moment the only way I see fixing it is a big change to ZClasses. Shane