Hello all,

I am running out of ideas, so I though maybe someone could help me spot the problem in this one. I have created a minimal example that reproduces the problem - basically, i have an OOBTree where keys are persistent objects and values are IOTreeSets. I am just storing elements, closing the transaction after each operation. Around the 600th element (sometimes 900th, it varies but seems to never reach 1000) a KeyError is thrown, just as if the operation in the previous line hadn't been performed. If i comment out the db instructions, everything runs as expected.

This is what I get when I run the code:
604 <BTrees.IOBTree.IOTreeSet object at 0x84fc38c>
605 <BTrees.IOBTree.IOTreeSet object at 0x84fc3d4>
606 <BTrees.IOBTree.IOTreeSet object at 0x844b1dc>
607 <BTrees.IOBTree.IOTreeSet object at 0x84fc41c>
608 <BTrees.IOBTree.IOTreeSet object at 0x84fc4ac>
Traceback (most recent call last):
  File "test-zodb.py", line 40, in <module>
    struct.index_obj(obj, i)
  File "test-zodb.py", line 20, in index_obj
    print number, self._idx[obj]
KeyError: <__main__.DummyObject object at 0x844822c>

Could this be some problem with using persistent objects as keys in a BTree? Some comparison problem?

Any help would be much appreciated :)



Attachment: oobtree.py
Description: application/python

For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to