[ZODB-Dev] ConflictError and POSKeyError with 2.6 CVS :-(

Jeremy Hylton jeremy@zope.com
Wed, 16 Oct 2002 11:26:01 -0400


>>>>> "AS" == Andrew Sydelko <andrew@sydelko.org> writes:

  AS> On Wed, 16 Oct 2002 09:58:13 -0400 jeremy@zope.com (Jeremy
  AS> Hylton) wrote:
  >> Chris,
  >>
  >> I just checked in a little script that should report on dangling
  >> references in a storage.  It scans the entire database and prints
  >> a little report like this for a corrupted storage:

  AS> I decided to run your fsrefs.py on our Data.fs and it came back
  AS> with:

  AS> # /data/www/Zope.10/bin/python fsrefs.py Data.fs
  AS> Traceback (most recent call last):
  AS>   File "fsrefs.py", line 79, in ?
  AS>     main(sys.argv[1])
  AS>   File "fsrefs.py", line 68, in main
  AS>     data, serial = fs.load(oid, "")
  AS>   File
  AS>   "/data/www/Zope.10/src/Zope-2.5.1-src/lib/python/ZODB/FileStorage.py",
  AS>   line 582, in load
  AS>     return self._load(oid, version, self._index, self._file)
  AS>   File
  AS>   "/data/www/Zope.10/src/Zope-2.5.1-src/lib/python/ZODB/FileStorage.py",
  AS>   line 569, in _load
  AS>     return _loadBack(file, oid, pnv)
  AS>   File
  AS>   "/data/www/Zope.10/src/Zope-2.5.1-src/lib/python/ZODB/FileStorage.py",
  AS>   line 2137, in _loadBack
  AS>     doid, serial, prev, tloc, vlen, plen =
  AS>     unpack(">8s8s8s8sH8s", h)
  AS> struct.error: unpack str size does not match format

  AS> Is that a bad thing?

It's not a good thing.  It means there's an object in your database
that can't be loaded.  I didn't consider that possibility when I wrote
this script, although it makes sense to report that as one class of
error.

Would it be possible to get a copy of your Data.fs and use it to
improve the script?

I can't really say how bad a problem this is.  It may be some object
that you're never going to want to load anyway.  You might run
fstest.py over the file to make sure there isn't low-level corruption
of the file.

Jeremy