Our Data.fs file is huge. We had a nightly process to pack it, but it seems that starting a few weeks ago, the nightly process now shows: ------ 2004-11-16T03:00:09 ERROR(200) ZODB packing Traceback (most recent call last): File "/opt/Zope-2.7/lib/python/ZODB/DB.py", line 528, in pack try: self._storage.pack(t,referencesf) File "/opt/Zope-2.7/lib/python/ZODB/FileStorage.py", line 1557, in pack opos = p.pack() File "/opt/Zope-2.7/lib/python/ZODB/fspack.py", line 698, in pack self.gc.findReachable() File "/opt/Zope-2.7/lib/python/ZODB/fspack.py", line 453, in findReachable self.buildPackIndex() File "/opt/Zope-2.7/lib/python/ZODB/fspack.py", line 494, in buildPackIndex u64(s), th.tlen) NameError: global name 's' is not defined ------ .... that seems to be the "stock" code, and nothing has changed that I can see. Can anyone offer suggestions on what I might need to do to get this back up and packing? Since the database is up to 5.X GB, any assistance would be greatly appreciated. :-) Cheers, D
[Derek J. Balling ]
Our Data.fs file is huge. We had a nightly process to pack it, but it seems that starting a few weeks ago, the nightly process now shows:
------ 2004-11-16T03:00:09 ERROR(200) ZODB packing Traceback (most recent call last): File "/opt/Zope-2.7/lib/python/ZODB/DB.py", line 528, in pack try: self._storage.pack(t,referencesf) File "/opt/Zope-2.7/lib/python/ZODB/FileStorage.py", line 1557, in pack opos = p.pack() File "/opt/Zope-2.7/lib/python/ZODB/fspack.py", line 698, in pack self.gc.findReachable() File "/opt/Zope-2.7/lib/python/ZODB/fspack.py", line 453, in findReachable self.buildPackIndex() File "/opt/Zope-2.7/lib/python/ZODB/fspack.py", line 494, in buildPackIndex u64(s), th.tlen) NameError: global name 's' is not defined ------
.... that seems to be the "stock" code, and nothing has changed that I can see. Can anyone offer suggestions on what I might need to do to get this back up and packing? Since the database is up to 5.X GB, any assistance would be greatly appreciated. :-)
Your database (Data.fs file) has become corrupt. Packing is trying to raise CorruptedError via this buggy code: self.fail(pos, "redundant transaction length does not " "match initial transaction length: %d != %d", u64(s), th.tlen) I *think* (but haven't verfied) that if you replace "u64(s)" with "tlen" it will succeed in raising tthe CorruptedError it's trying to raise. In that case packing will still fail, but the message will make more sense. It indicates corruption at a very low level. Next step is to read this: http://zope.org/Wikis/ZODB/FileStorageBackup then start investigating the nature of the damage with fstest.py and fsrefs.py.
Tim Peters wrote:
Next step is to read this:
http://zope.org/Wikis/ZODB/FileStorageBackup
then start investigating the nature of the damage with fstest.py and fsrefs.py.
K, now I don't mean to sound stupid, but I inherited a Zope install, and I know absolutely nothing about: (a) python (b) Zope (c) the application we run on this platform (MailManager) ... so any assistance you can give would be appreciated.:-) If I run fstest.py I get: # python /usr/local/Zope-2.7.0/utilities/ZODBTools/fstest.py /home/dballing/Data.fs /home/dballing/Data.fs has inconsistent transaction length for undone transaction at 475866827 .. if I try fsrefs, I get even less pleasant output: # python /usr/local/Zope-2.7.0/utilities/ZODBTools/fsrefs.py /home/dballing/Data.fs Traceback (most recent call last): File "/usr/local/Zope-2.7.0/utilities/ZODBTools/fsrefs.py", line 25, in ? from ZODB.FileStorage import FileStorage ImportError: No module named ZODB.FileStorage Ugh... any pointers on what I should do next? D
participants (2)
-
Derek J. Balling -
Tim Peters