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

Reply via email to