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



_______________________________________________
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )

Reply via email to