About ZODB OIBucket

I have this error in my log which prevents the rendering of plone.contentviews in the Plone toolbar.

2019-02-06T09:51:53 ERROR ZODB.Connection Couldn't load state for BTrees.OIBTree.OIBucket 0x06499f

This object is in the database but it is somehow broken. When called, a recursion occurs. This is related to my previous post on recursion errors with p.a.drafts. I am pursuing this error again because it happens from time to time. We can not determine what user action triggers it. Our current solution is to delete broken objects.

My question is what is this object? Is it an object index? Does this mean there is some inconsistencies in the Data.fs.index? Should we delete this file so Plone generates a new one?

You might try lookup and investigate the relate bucket by its OID 0x06499f using the p64() method.

from ZODB.utils import p64

There is some example in the ZODB docs on using p64():

http://www.zodb.org/en/latest/articles/multi-zodb-gc.html

On the internals of ZODB BTrees:

https://pythonhosted.org/BTrees/

Thanks @zopyx. I have used p64 to investigate. I learned about it from an article I found that you authored.

I get the OIBucket object but when called, I get the recursion issue.

I have just started to dive into the BTrees documentation and has since learned that O stands for Object and I for integer and not Index.

Still clueless though.

Sorry, no further idea...perhaps one of the reason why I started to hate the ZODB years ago :slight_smile: