Skip to content

v↑ tempstorage 2.12.2 -> 5.2(ZODB5) 3-nxd(ZODB4-wc2, ZODB4)

Kirill Smelkov requested to merge kirr/slapos:y/tempstorage-vup into master

tempstorage 2.12.2 is from 2012 and misses loadBefore fixes which are important when ERP5 is run with ZODB5 or ZODB4-wc2:

https://github.com/zopefoundation/tempstorage/commit/d187a86d
https://github.com/zopefoundation/tempstorage/pull/16

When the first loadBefore fix is not there, the problem manifests itself as Zope not starting correctly with the following error in its log:

2021-07-02 08:37:25,579 ERROR Zope.ZODBMountPoint Failed to mount database. <class 'ZODB.POSException.ReadConflictError'> (^@^@^@^@^@^@^@^@)
Traceback (most recent call last):
 File ".../eggs/Zope2-2.13.30-py2.7.egg/Products/ZODBMountPoint/MountedObject.py", line 248, in _getOrOpenObject
   root = conn.root()
 File ".../parts/ZODB4-wc2/src/ZODB/Connection.py", line 405, in root
   return RootConvenience(self.get(z64))
 File ".../parts/ZODB4-wc2/src/ZODB/Connection.py", line 276, in get 
   p, serial = self._load(oid)
 File ".../parts/ZODB4-wc2/src/ZODB/Connection.py", line 246, in _load
   return self._loadFrom(oid, self._storage)
 File ".../parts/ZODB4-wc2/src/ZODB/Connection.py", line 255, in _loadFrom
   raise ReadConflictError(oid)
ReadConflictError: ^@^@^@^@^@^@^@^@

When the second loadBefore fix is not there, the problem manifests itself as data corruption and sporadic POSKeyErrors (https://github.com/zopefoundation/tempstorage/issues/8).

-> Fix both problem by using recent tempstorage with ZODB5 and ZODB4:

/cc @tomo, @romain, @rafael

Edited by Kirill Smelkov

Merge request reports