[ZODB-Dev] Re: BTrees strangeness (was [Zope-dev] Zope 2.X BIG Session problems - blocker - our site dies - need help of experience Zope developer, please)

Jeremy Hylton jeremy at zope.com
Wed Mar 3 12:44:29 EST 2004


On Wed, 2004-03-03 at 04:55, Chris McDonough wrote:
> (boldly crossposting this to zodb-dev, please respond on one list or the
> other but not both)
> 
> That error *appears* to be caused by reaching a state that is impossible
> to reach.  The code in question is:
> 
>         for key in list(self._data.keys(None, max_ts)):
>             assert(key <= max_ts)
>             STRICT and _assert(self._data.has_key(key))
>             for v in self._data[key].values():
>                 to_notify.append(v)
>             del self._data[key]

I don't have much context for this question.  It's definitely the case
that a corrupt BTree there are keys you can reach using keys(), which
follows the bucket next pointers, that can't reach using a lookup, which
follows child pointers down through the interior nodes.

If you could call the check functions on the BTrees in question.  That's
object._check() to check C internals and BTrees.check.check() to check
value based consistency.

So how is the BTree is question used?  If the test is failing here, it
seems most likely that the BTree was corrupted by a write somewhere
else.

Jeremy





More information about the Zope-Dev mailing list