Today was interesting when an issue with saving content on a Plone 3.3.5 site got reported to me. The system was producing undecipherable error messages about ZEO disconnections and database conflicts whenever someone would try and create some content within Plone (folders, particularly). Errors looked like “Module ZEO.zrpc.connection, line 796, in wait. DisconnectedError” and “raise ReadConflictError(). ReadConflictError: database read conflict error”, and also “ERROR ZEO.zrpc (2515) can’t decode message: ‘(K\x11K\x01U\tserialnos(]((U\x08\x00\x00\x00\x00\x00X\x…’” — essentially the issue described here. My ZEO server was running ZODB3 3.9.5 with Python 2.6, and my client running ZODB3 3.8.3 with Python 2.4; almost everything worked.
Continue reading »
Today, I needed to migrate some legacy Plone installs set up using Buildout. If I were to simply move the buildout files and re-run buildout, I’d end up with the latest versions of add-on products – and since I’m using legacy versions of Plone 3, that’d almost certainly break the system. I do know about the Buildout extension buildout.dumppickedversions (which does what its name suggests and exports picked versions of eggs) but I can’t re-run buildout to get this extension for risk of updating existing products (what I’m trying to avoid!).
Continue reading »
After upgrading from Ubuntu 10.10 (Maverick Meerkat) to Ubuntu 11.04 (Natty Narwhal), you’ll probably find that if you’re running a Plone 4 buildout where you need to upgrade the Plone version, that compilation of Zope will fail. The output will look something like this:
Getting distribution for 'Zope2==2.12.17'. In file included from src/AccessControl/cAccessControl.c:51:0: include/ExtensionClass/ExtensionClass.h:83:20: fatal error: Python.h: No such file or directory compilation terminated. error: Setup script exited with error: command 'gcc' failed with exit status 1 An error occured when trying to install Zope2 2.12.17. Look above this message for any errors that were output by easy_install.
The reason for this is that the default Python version in Ubuntu 11.04 is now Python 2.7, rather than 2.6 as was previously the case. The message here is telling us our Python development libraries/headers aren’t available, so do this:
sudo apt-get install python2.6-dev
and re-run your buildout. Make sure too that if you’re using Plone 4 that you’re using Python 2.6, as newer versions like 2.7 aren’t supported (yet).
What you may notice if you’re developing with Plone/Zope, is that if you’re storing small pieces of data within Plone’s session variable (the session_data_manager tool), data expires after a few minutes. By default, this timeout is 20 minutes, but is far too short if you’re expecting the information stored to last for say the whole time a user is logged in. In this situation, you’ll need to increase the timeout.
Continue reading »
Disclaimer: this post isn’t giving relationship advice (or..it is in some twisted way). Unsurprisingly, removing content in Plone via the ZMI when Plone says something can’t be deleted is likely to cause problems.
In my case, the fact I removed a Dexterity-based container (“Project”) caused users to no longer add or edit content of my Project type. The reason for this boiled down to my use of RelationChoice fields, in order link Projects to Person objects and vice versa. The backend storage for the RelationChoice field is an instance of z3c.relationfield.index.RelationCatalog, and this keeps records of where the relations are going to and going from.
Continue reading »
