Eine Ebene höher
Frage
Meine ZODB ist größer als 2 GB und lässt sich nicht mehr packen "OverflowError".
Antwort
Zope gibt folgende Fehlermeldung aus:
Zope Error: ---------- Zope has encountered an error while publishing this resource. Error Type: OverflowError Error Value: integer addition ----------Die Einträge im Logfile sehen so aus:: traceback: ---------- 2003-08-07T23:16:18 ERROR(200) ZODB packing Traceback (innermost last): File /home/zope/Zope/lib/python/ZODB/DB.py, line 502, in pack File /home/zope/Zope/lib/python/ZODB/FileStorage.py, line 1503, in pack (Object: /home/zope/Zope/var/Data.fs) File /home/zope/Zope/lib/python/ZODB/fspack.py, line 658, in pack File /home/zope/Zope/lib/python/ZODB/fspack.py, line 442, in findReachable File /home/zope/Zope/lib/python/ZODB/fspack.py, line 459, in buildPackIndex OverflowError: integer addition Der Code zum Packen der ZODB in Zope-2.6.2 ist ein backport aus der ZODB4, die wiederum python2.2 oder neuer voraussetzt. Python2.2 ist in der Lage overflows bei integer Operation mit short int abzufedern, indem es das Ergebnis automatisch in einen long-int korrigiert. In Python2.2 gibt es also keine interger overflows mehr. Wird nun Zope noch mit pyhton 2.1.3 oder kleiner betrieben, kann es also zu diesem Überlauf kommen. Vorab sollte aber überprüft werden, ob das verwendete Python überhaupt mit "LFS-Support":http://www.dzug.org/mailinglisten/zope/archive/2001/2001-10/1002712440000 (LargeFileSystem) gebaut wurde, d.h. mit File größer als 2 GB umgehen kann. Dann bestehen drei Lösungsmöglichkeiten: a) Python Update auf pyhton2.2.3 oder neuer b) Zope-Update auf die neueste Version (mind. Zope 2.6.2b5). Dort ist der Fehler gefixt. c) Händisches Patchen der lib/python/ZODB/fspack.py in folgenden Zeilen (diese können u.U. variieren):: 86c64 < _metadata_size = 4L --- > _metadata_size = 4 < pos = 4L --- > pos = 4 766c736 < new_tpos = 0L --- > new_tpos = 0 siehe auch: "ZODB automatisch packen":https://www.dzug.org/SchreibMit/ZopeFaq/Administration/datenbank_packen