Hi, Over the past few years I've encountered the same problem again and again and I'm now wondering what would be the best way to fix this? The problem is this: whenever I want to create a website I'm always starting with a brand new Plone Site (in an existing Plone 3 instance that is), without the need for installing any custom products (well maybe a few that I'm confident will not cause any problems later when the Plone instance has to be migrated to a new version).
During the year as more functionality is often required, new products are installed and integrated in some of these websites. Some products conflict with others and have to be temporarily disabled at times. Also, some products aren't supported yet on newer Plone versions, so they have to be disabled as well. And of course, sometimes a product is just tried out on a website but not fit for the purpose and discarded afterwards, often leaving silent traces behind. As I have more websites than Plone instances, I have to sometimes rearrange them using the Zope interface. Many times, it is then that problems occur. I'm currently using Plone 3.3.5 and have just migrated all the website on this instance without any errors. Trying to rename a website (the Plone Site object) containing only 4 pages to something more meaningful for example gives the following error: cPickle.PicklingError Module ZPublisher.Publish, line 202, in publish_module_standard Module Products.LinguaPlone.patches, line 68, in new_publish Module ZPublisher.Publish, line 150, in publish Module plone.app.linkintegrity.monkey, line 21, in zpublisher_exception_hook_wrapper Module ZPublisher.Publish, line 125, in publish Module Zope2.App.startup, line 238, in commit Module transaction._manager, line 96, in commit Module transaction._transaction, line 395, in commit Module transaction._transaction, line 495, in _commitResources Module ZODB.Connection, line 510, in commit Module ZODB.Connection, line 555, in _commit Module ZODB.Connection, line 582, in _store_objects Module ZODB.serialize, line 407, in serialize Module ZODB.serialize, line 416, in _dump PicklingError: Can't pickle <class 'plone.registry.interfaces.IRegistry'>: import of module plone.registry.interfaces failed The same happens when I try to move the site to somewhere else in the same ZODB or even when I try to delete the website. However, trying to make a backup copy of this website in the same folder (copy/paste) leads to: exceptions.ImportError Module ZPublisher.Publish, line 202, in publish_module_standard Module Products.LinguaPlone.patches, line 68, in new_publish Module ZPublisher.Publish, line 150, in publish Module plone.app.linkintegrity.monkey, line 21, in zpublisher_exception_hook_wrapper Module ZPublisher.Publish, line 119, in publish Module ZPublisher.mapply, line 88, in mapply Module ZPublisher.Publish, line 42, in call_object Module OFS.CopySupport, line 220, in manage_pasteObjects Module OFS.CopySupport, line 576, in _getCopy Module ZODB.ExportImport, line 75, in importFile Module transaction._transaction, line 312, in savepoint Module transaction._transaction, line 309, in savepoint Module transaction._transaction, line 737, in __init__ Module ZODB.Connection, line 1048, in savepoint Module ZODB.Connection, line 519, in _commit Module ZODB.ExportImport, line 144, in _importDuringCommit ImportError: No module named registry.interfaces Funny thing is that making an export (ZEXP) succeeds without any errors. But importing the exported website gives the same error as above. Clearly, it has to got something to do with an object in the ZODB related to a missing filesystem product. Why can't the import function just ignore the offending object, log some error but still continue with the process. If a filesystem product is missing than clearly it is of no use trying to revive it. The above is just an example. I know that a lot of other people encounter these kind of problems regularly. So my question is, how to deal with this in general? Is there a script or tool that can be used to detect and/or remove bad objects from the ZODB? Is there a procedure that can be followed to prevent this from happening? Can Plone/Zope be patched to ignore bad objects when importing/exporting? My concern is that moving, copying, renaming and deleting obejcts in the ZODB are fairly trivial operations that one should rely on will never fail. If these operations were carried out on a filesystem for example, only permission/resource related issues would have any impact. Similar operations carried out on a relational database would even have less chance to fail. In the Zope/Plone domain content related issues are often the cause of problems, which is not a good thing. Hopefully, someone has an answer or suggestion. That would make life for many of us much easier! Thanks and regards, Bob Muller ZenWeb / Attribute ICT-Consultancy
_______________________________________________ Setup mailing list [email protected] http://lists.plone.org/mailman/listinfo/setup
