[ZODB-Dev] More ZODB POSKeyErrors with 2.6.0

Jeremy Hylton jeremy@zope.com (Jeremy Hylton)
Thu, 7 Nov 2002 11:52:14 -0500


>>>>> "CW" == Chris Withers <chrisw@nipltd.com> writes:

  CW> Jeremy Hylton wrote:
  >> I just realized that this is probably a George Bailey object.
  >> That is, an undo or abort version undid the object creation.  So
  >> the object exists in the index, but is not loadable from the
  >> current state of the database.

  CW> But I deleted the index and it still happens!

That's right.  The database isn't corrupted, but the current database
record for the object is an uncreation record.  It is possible for you
to undo the uncreation event, at which point the object will be
reachable again.

  CW> Also, this doesn't appear to have anything to do with the
  CW> POSKeyError I reported. Thankfully those haven't re-occurred yet
  CW> but I'd like to have some plans for the next time they do...

It would be interesting to save a snapshot of the index and the
storage itself.  It seems like there are three serious possibilities:

 - A corrupted index file gets loaded; the index doesn't match the
   data in the file.

 - There is no index, but there is a bug in the code that creates an
   index from the storage.

 - There's a bug in the fsIndex code that causes the index to become
   corrupted at runtime.

I'd observe that since you continue to see these errors after
upgrading to the latest BTrees code, I find it less likely that any of
the errors were the result of BTrees bugs.

Jeremy