-
Kirill Smelkov authored
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: - ZODB5: just use tempstorage 5.2 egg - ZODB4-wc2: use tempstorage 3 + loadBefore backports: https://lab.nexedi.com/nexedi/tempstorage/commits/3-nxd - ZODB4: stays at 2.12.2 for now for this change to be as risk-free as possible. However, due to the fixes and e.g. https://github.com/zopefoundation/tempstorage/issues/8#issuecomment-873894941 it makes sense to switch ZODB4 to tempstorage 3-nxd as well. /cc @tomo, @romain, @rafael
6e696faa