Plone 4.3, ZODB repair: Pinnings for zc.zodbdgm

I have a Plone site which is still based on Plone 4.3;
I have changed it from using RelStorage to a ZEO setup (which seems to improve performance, BTW; but both the PostgreSQL and psycopg2 versions are quite old).

Now I found the bin/zeopack utility to fail after some five minutes:

> ZODB.blob WARNING (12259) Blob dir .../my/buildout/root/var/blobstorage/ has insecure mode setting
> Traceback (most recent call last):
>   File ".../my/buildout/root/bin/zeopack", line 40, in <module>
>     sys.exit(plone.recipe.zeoserver.pack.main(host, port, unix, days, username, password, realm, blob_dir, storage))
>   File "/opt/zope/common/eggs/plone.recipe.zeoserver-1.3.1-py2.7.egg/plone/recipe/zeoserver/pack.py", line 58, in main
>     _main(*args, **kw)
>   File "/opt/zope/common/eggs/plone.recipe.zeoserver-1.3.1-py2.7.egg/plone/recipe/zeoserver/pack.py", line 39, in _main
>     cs.pack(wait=True, days=int(days))
>   File "/opt/zope/common/eggs/ZODB3-3.10.5-py2.7-linux-x86_64.egg/ZEO/ClientStorage.py", line 916, in pack
>     return self._server.pack(t, wait)
>   File "/opt/zope/common/eggs/ZODB3-3.10.5-py2.7-linux-x86_64.egg/ZEO/ServerStub.py", line 155, in pack
>     self.rpc.call('pack', t, wait)
>   File "/opt/zope/common/eggs/ZODB3-3.10.5-py2.7-linux-x86_64.egg/ZEO/zrpc/connection.py", line 768, in call
>     raise inst # error raised by server
> KeyError: '\xd2!'

(same for ZODB3 v3.10.7)

I found this page about zeopack and KeyErrors which pointed me to this useful page about zodbdgc.

After disabling garbage collection in the zeoserver setup, I was able to pack.
I'd certainly still like to have that zodbdgc part and the multi-zodb-check-refs script (to get rid of the broken objects); but I was not able to build it.

Probably a matter of versions pinning?

Would it be safe to use ZODB3 v3.11.0 in my Plone 4.3 site? Zope 2.13.30 still pins ZODB3 to 3.10.7 which still includes BTrees, persistent, ZODB and ZEO as subpackages.

I currently have, in my zeoserver part:

plone.recipe.zeoserver = 1.3.1
ZopeUndo = 2.12.0
ZODB3 = 3.10.7
zope.mkzeoinstance = 3.9.5
zc.recipe.egg = 1.3.2
setuptools = 26.1.1
zope.interface = 3.6.7
zope.event = 3.5.2
zdaemon = 2.0.7
ZConfig = 2.9.1
zc.lockfile = 1.4
transaction = 1.1.1

Any hints, e.g. about working pinnings? Thank you!

It's impossible to tell, since you didn't show what went wrong when you tried to build it.

Would it be safe to use ZODB3 v3.11.0 in my Plone 4.3 site?

I would guess there is a reason it was not updated in the Zope2 version pins, but I don't know if that was just because of maintaining backwards compatibility, or an actual incompatibility. Proceed with caution.

Would collective.exportimport help here? :thinking: