Hi! I am in the process of migrating one site from plone 3.3.4 to 4.0. as a first step towards migration to 5.x.
I've copied data.fs to a new installation of plone 4. The ZMI home page guides me through the upgrade process saying "your site configuration is outdated and needs to be updated". When I click the upgrade button (both with and without dry run checkbox checked), the upgrade process prints the following error statements:
(I omitted the previous rows that appear not to show any errors)
migrating btree-based folders from <PloneSite at /Plone>:
Upgrade aborted. Error:
Traceback (most recent call last):
File "/usr/local/Plone4/buildout-cache/eggs/Plone-4.0-py2.6.egg/Products/CMFPlone/MigrationTool.py", line 175, in upgrade
step['step'].doStep(setup)
File "/usr/local/Plone4/buildout-cache/eggs/Products.GenericSetup-1.6.1-py2.6.egg/Products/GenericSetup/upgrade.py", line 141, in doStep
self.handler(tool)
File "/usr/local/Plone4/buildout-cache/eggs/plone.app.upgrade-1.0-py2.6.egg/plone/app/upgrade/v40/alphas.py", line 444, in migrateFolders
MigrationView(portal, None)()
File "/usr/local/Plone4/buildout-cache/eggs/plone.app.folder-1.0.1-py2.6.egg/plone/app/folder/migration.py", line 71, in __call__
if self.migrate(obj):
File "/usr/local/Plone4/buildout-cache/eggs/plone.app.folder-1.0.1-py2.6.egg/plone/app/folder/migration.py", line 33, in migrate
assert folder.getId() # make sure the object is properly loaded
File "/usr/local/Plone4/buildout-cache/eggs/ZODB3-3.9.5-py2.6-linux-i686.egg/ZODB/Connection.py", line 838, in setstate
self._setstate(obj)
File "/usr/local/Plone4/buildout-cache/eggs/ZODB3-3.9.5-py2.6-linux-i686.egg/ZODB/Connection.py", line 906, in _setstate
self._reader.setGhostState(obj, p)
File "/usr/local/Plone4/buildout-cache/eggs/ZODB3-3.9.5-py2.6-linux-i686.egg/ZODB/serialize.py", line 629, in setGhostState
state = self.getState(pickle)
File "/usr/local/Plone4/buildout-cache/eggs/ZODB3-3.9.5-py2.6-linux-i686.egg/ZODB/serialize.py", line 622, in getState
return unpickler.load()
File "/usr/local/Plone4/buildout-cache/eggs/zope.interface-3.5.3-py2.6-linux-i686.egg/zope/interface/declarations.py", line 753, in Provides
spec = ProvidesClass(*interfaces)
File "/usr/local/Plone4/buildout-cache/eggs/zope.interface-3.5.3-py2.6-linux-i686.egg/zope/interface/declarations.py", line 656, in __init__
Declaration.__init__(self, *(interfaces + (implementedBy(cls), )))
File "/usr/local/Plone4/buildout-cache/eggs/zope.interface-3.5.3-py2.6-linux-i686.egg/zope/interface/declarations.py", line 47, in __init__
Specification.__init__(self, _normalizeargs(interfaces))
File "/usr/local/Plone4/buildout-cache/eggs/zope.interface-3.5.3-py2.6-linux-i686.egg/zope/interface/declarations.py", line 1372, in _normalizeargs
_normalizeargs(v, output)
File "/usr/local/Plone4/buildout-cache/eggs/zope.interface-3.5.3-py2.6-linux-i686.egg/zope/interface/declarations.py", line 1371, in _normalizeargs
for v in sequence:
TypeError: ("'ExtensionClass.ExtensionClass' object is not iterable", <function Provides at 0x9b1a304>, (<class 'Products.ATContentTypes.content.folder.ATFolder'>, <InterfaceClass Products.CMFPlone.interfaces.breadcrumbs.IHideFromBreadcrumbs>, <class 'plone.app.kss.interfaces.IPloneSiteRoot'>, <InterfaceClass Products.CMFPlone.interfaces.siteroot.IPloneSiteRoot>, <InterfaceClass plone.app.layout.navigation.interfaces.INavigationRoot>))
End of upgrade path, migration has finished
The upgrade path did NOT reach current version
Migration has failed
Dry run selected, transaction aborted
According to Exceptions and common tracebacks in the Plone 4 documentation the error message:
TypeError: 'ExtensionClass.ExtensionClass' object is not iterable
tends to happen after moving a Data.fs to a new instance that does not have the identical add-ons to the original instance.
I checked the addons in buildout and they are the same both in Plone 3.3.4. and 4.0 installations
Products.ContentWellPortlets Products.TinyMCE Products.FCKeditor Products.RedirectionTool Products.LinguaPlone
I really don't understand the reason for this error.
Thanks for your help
Gianni