Plone 5.1b3 update from 5.0.5 fails on update_social_media_fields

Hi All!
Back for my annual site update and hacking.
I've been having problems with the Mosaic layout in my current 5.0.5 buidout, and noted that the current beta brings Mosaic up to version 2.x, so here I am :wink:
I've made a test Digital Ocean droplet which is a duplicate of my live site, so no fear :wink:

I've run the new buildout (see attached) and then manually run upgrades on the new third-party products (per the Plone Upgrade Guide, thanks!) which got me past some initial white screen roadblocks.
However, when I now go to run the site upgrade, it stops as shown below.
I've gone into the site, and removed the data from the Social Media setup altogether, but it still complains about the "wrong type"
Any hints would be greatly appreciated!
I'm hoping the Mosaic update will fix the complaints I've run into...
If not, I'll address that separately with the Mosaic team.
Many thanks!

Peter F
@ideaswords

Traceback:
Dry run selected.
Starting the migration from version: 5015
Ran upgrade step: Miscellaneous
Role / permission map imported.
Archetype tool imported.
Ran upgrade step: Run to507 upgrade profile.
Role / permission map imported.
Control panel imported.
Archetype tool imported.
Interface Products.ResourceRegistries.interfaces.settings.IResourceRegistriesSettings specified for record %s has no field plone.lessvariables.
Ran upgrade step: Run to51alpha1 upgrade profile.
Role / permission map imported.
Archetype tool imported.
Removed record plone.resources/mockup-registry.init.
Removed record plone.resources/mockup-registry.export.
Removed record plone.resources/mockup-registry.deps.
Removed record plone.resources/mockup-registry.conf.
Removed record plone.resources/mockup-registry.url.
Removed record plone.resources/mockup-registry.css.
Removed record plone.resources/mockup-registry.js.
Removed record plone.resources/mockup-parser.init.
Removed record plone.resources/mockup-parser.export.
Removed record plone.resources/mockup-parser.deps.
Removed record plone.resources/mockup-parser.conf.
Removed record plone.resources/mockup-parser.url.
Removed record plone.resources/mockup-parser.css.
Removed record plone.resources/mockup-parser.js.
Ran upgrade step: Run to51alpha2 upgrade profile.
Role / permission map imported.
Toolset imported.
Archetype tool imported.
Ran upgrade step: Run to51beta1 upgrade profile.
Added 'sort_on' property to site_properties.
Ran upgrade step: Add default search options
Removed no longer existing path mimetypes_icons from skin selection Plone Default.
Removed no longer existing path PasswordReset from skin selection Plone Default.
Removed no longer existing path LanguageTool from skin selection Plone Default.
Removed no longer existing path plone_content from skin selection Plone Default.
Removed no longer existing path mimetypes_icons from skin selection mosaic.
Removed no longer existing path PasswordReset from skin selection mosaic.
Removed no longer existing path LanguageTool from skin selection mosaic.
Removed no longer existing path plone_content from skin selection mosaic.
Ran upgrade step: Remove skins layer converted to browser resources
Ran upgrade step: Remove jquery.cookie from plone-logged-in stub_js_modules
Role / permission map imported.
Toolset imported.
Archetype tool imported.
Ran upgrade step: Run to51beta1 upgrade profile.
Ran upgrade step: Remove displayContentsTab from action expressions
Ran upgrade step: Miscellaneous
Role / permission map imported.
Archetype tool imported.
Ran upgrade step: Run to51beta3 upgrade profile.
Upgrade aborted. Error:
Traceback (most recent call last):
File "/opt/plone/buildout-cache/eggs/Products.CMFPlone-5.1b3-py2.7.egg/Products/CMFPlone/MigrationTool.py", line 268, in upgrade
step['step'].doStep(setup)
File "/opt/plone/buildout-cache/eggs/Products.GenericSetup-1.8.7-py2.7.egg/Products/GenericSetup/upgrade.py", line 166, in doStep
self.handler(tool)
File "/opt/plone/buildout-cache/eggs/plone.app.upgrade-2.0.2-py2.7.egg/plone/app/upgrade/v51/betas.py", line 130, in update_social_media_fields
settings.twitter_username = str(settings.twitter_username)
File "/opt/plone/buildout-cache/eggs/plone.registry-1.1.2-py2.7.egg/plone/registry/recordsproxy.py", line 60, in setattr
self.registry[full_name] = value
File "/opt/plone/buildout-cache/eggs/plone.registry-1.1.2-py2.7.egg/plone/registry/registry.py", line 51, in setitem
self.records[name].value = value
File "/opt/plone/buildout-cache/eggs/plone.registry-1.1.2-py2.7.egg/plone/registry/record.py", line 82, in _set_value
field.validate(value)
File "/opt/plone/buildout-cache/eggs/zope.schema-4.4.2-py2.7.egg/zope/schema/_bootstrapfields.py", line 183, in validate
self._validate(value)
File "/opt/plone/buildout-cache/eggs/zope.schema-4.4.2-py2.7.egg/zope/schema/_bootstrapfields.py", line 310, in _validate
super(MinMaxLen, self)._validate(value)
File "/opt/plone/buildout-cache/eggs/zope.schema-4.4.2-py2.7.egg/zope/schema/_bootstrapfields.py", line 210, in _validate
raise WrongType(value, self._type, self.name)
WrongType: ('ideaswords', <type 'unicode'>, 'value')
End of upgrade path, main migration has finished.
The upgrade path did NOT reach current version.
Migration has failed
Dry run selected, transaction aborted

buildout.cfg:
############################################
#
# Buildout Configuration File for Plone
# -------------------------------------
#
# ALWAYS back up all Plone/Zope data and components
# before changing configuration.
#
# Running "bin/buildout" will update your installation,
# installing missing components as necessary.
#
# This will update the add-on products you've added in the eggs= lines.
# This will not, however, upgrade Plone itself (or anything else you've
# pinned with a version specification). To upgrade Plone itself, see the
# comments in "Plone Component Versions".
#
# Tutorial instructions for using zc.buildout for
# configuration management are available at:
# http://plone.org/documentation/tutorial/buildout
# Full details at http://pypi.python.org/pypi/zc.buildout
#
############################################

[buildout]
############################################
# Plone Component Versions
# ------------------------
# This version of the Unified Installer has the components of Plone 5
# preloaded so that it can install without an Internet connection.
# If you want to update, uncomment the "http://..." line below,
# edit it to point to the current version URL, comment out the
# "versions.cfg" line and run "bin/buildout" while attached to the
# Internet. Generally, you only want to do that as part of a planned migration.
# Note that if you are updating components, you should also check the versions
# section at the end of this file, since recipes or components other than
# those of Zope and Plone may need updating at the same time.
#
extends =
    base.cfg
#    versions.cfg
    http://dist.plone.org/release/5.1b3/versions.cfg

# If you change your Plone version, you'll also need to update
# the repository link below.
find-links +=
    http://dist.plone.org/release/5.1b3

# If you try to start Zope as root, it will change user id to run as
# the effective user specified here. This user id must own the var directory
# of your buildout.
effective-user = plone_daemon
# This user will own the rest of the installation, and should be used to
# run buildout.
buildout-user = plone_buildout
# A flag to tell the Unified Installer whether or not to document sudo use.
need-sudo = yes

############################################
# Eggs
# ----
# Add an indented line to the eggs section for any Python
# eggs or packages you wish to include in your Plone instance.
#
# Note that versions may be specified here or in the [versions]
# section below. You should always specify versions that you know
# are compatible with the Plone release and at an acceptable
# development level.
#
# If you update to a later version of Plone, remove the hotfix.
#
eggs =
    Plone
    Pillow
    Products.RedirectionTool
    Products.PloneFormGen
    plone.app.mosaic
    plone.app.imagecropping
############################################
# ZCML Slugs
# ----------
# Some eggs need ZCML slugs to tell Zope to
# use them. This is increasingly rare.
zcml =
#    plone.reload

############################################
# Development Eggs
# ----------------
# You can use paster to create "development eggs" to
# develop new products/themes. Put these in the src/
# directory.
# You will also need to add the egg names in the
# eggs section above, and may also need to add them
# to the zcml section.
#
# Provide the *paths* to the eggs you are developing here:
develop =
#    src/my.package

############################################
# var Directory
# -------------
# Sets the target directory for the "var" components of the install such as
# database and log files.
#
var-dir=${buildout:directory}/var

############################################
# Backup Directory
# ----------------
# Sets the target directory for the bin/backup and bin/snapshotbackup
# commands. Default is inside this project's var directory, but ideally
# this should be on a separate volume or backup server.
#
backups-dir=${buildout:var-dir}

############################################
# Initial User
# ------------
# This is the user id and password that will be used to create the initial
# user id that will allow you to log in and create a Plone site. This only
# sets the initial password; it will not allow you to change an already
# existing password. If you change the admin password via the web interface,
# the one below will no longer be valid.
# If you find yourself locked out of your Zope/Python installation, you may
# add an emergency user via "bin/plonectl adduser".
user=admin:xxxxxxx

############################################
# Debug Options
# -------------
# Start Zope/Plone instances in "fg" mode to turn on debug mode;
# this will dramatically slow Plone.
#
# Add-on developers should turn deprecation warnings on
deprecation-warnings = off
# change verbose-security to "on" for useful security errors while developing
verbose-security = off

############################################
# Parts Specification
#--------------------
# Specifies the components that should be included in the buildout.
# Most are defined in the base.cfg extension; you may add your
# own if you need them at the end of this file.
parts =
    zeoserver
    client1
    backup
    zopepy
    unifiedinstaller
    precompiler
    setpermissions

############################################
# Major Parts
# ----------------------
# These common parts make use of sane base settings from
# base.cfg. To customize a part, just add whatever options
# you need. Read base.cfg for common settings.

[zeoserver]
<= zeoserver_base
recipe = plone.recipe.zeoserver
zeo-address = 127.0.0.1:8100

[client1]
<= client_base
recipe = plone.recipe.zope2instance
zeo-address = ${zeoserver:zeo-address}
http-address = 8080

############################################
# Versions Specification
# ----------------------
# Version information supplied here will "pin" Python packages to a particular
# version number, even when you use the "newest" flag running buildout.
# Specifying versions for all packages is a good idea and can prevent
# accidental changes when you add new packages to your buildout.
# Note that versions specified here will override those specified earlier
# in the configuration, including those from the Plone and Zope version
# config files.
#
[versions]
# Use the setuptools and zc.buildout versions that are
# available in our Python environment.
setuptools =
zc.buildout =

Products.DocFinderTab = 1.0.5
bobtemplates.plone = 1.0.3
buildout.sanitycheck = 1.0.2
collective.checkdocs = 0.2
collective.recipe.backup = 3.0.0
mr.bob = 0.1.2
pkginfo = 1.3.2
plone.recipe.unifiedinstaller = 4.3.2
requests-toolbelt = 0.6.2
twine = 1.7.2
zest.pocompile = 1.4
zest.releaser = 6.6.4

# Required by:
# Jinja2==2.8
MarkupSafe = 0.23

# Required by:
# clint==0.5.1
args = 0.1.0

# Required by:
# twine==1.7.2
clint = 0.5.1

# Required by:
# zest.releaser==6.6.4
colorama = 0.3.7

I've worked around the registry problem by deselecting the final step portal_setup.
I'd still like to get thoughts on what's going on there, however. If it's a bug it ought to be registered!
Unfortunately, even after the upgrade Mosaic is still giving me grief.
More on that after I get specific examples...

Thanks!
PF

Where does "ideaswords" come from?

It's my online persona, twitter handle, etc.
Ideas, Words—Idea Swords
:slight_smile:

Yeah I get that :slight_smile: but I meant specifically in the log of your upgrade.

Oh, sorry. It's in the Social Links panel.
/@@social-controlpanel

The error is raised whether there's a value there or not.
I only got the upgrade to run by disabling that last step in the registry.

P

that issue was first reported here:

I'm still waiting for help to solve it.

Ah, thanks for the confirmation!
As noted I did get the upgrade to run by disabling the last step in the portal_setup.
P

Looks like the error started here: plone.app.upgrade/plone/app/upgrade/v51/betas.py at 2.0.2 · plone/plone.app.upgrade · GitHub and has something to do with the Twitter name.

do you mind to open a new ticket on the Plone issue tracker so we can discuss and fix this?

@pfraterdeus [quote="hvelarde, post:10, topic:4129, full:true"]
do you mind to open a new ticket on the Plone issue tracker so we can discuss and fix this?
[/quote]

Here: http://github.com/plone/Products.CMFPlone/issues/new

Oh my. I seem to have dropped the ball on this one!
Shall I still open a ticket on this, or is it a stale issue at this point?!
Sorry about that!
PF

If you have time to verify if it's still a problem in the current 5.1rc2...

1 Like

When I have a chance to clone my droplet, I'll try the upgrade again.
Thanks Kim and Happy Solstice to All!

1 Like

No problems with the upgrade to 5.0.8 and then to 5.1-latest!

1 Like