[ZODB-Dev] "unghostified object not in cache"

Tim Peters tim.peters at gmail.com
Sun Sep 17 14:26:31 EDT 2006


[John Belmonte]
> Just reporting that I got this spurious error with Python 2.4,
> mod_python 3.2.10, and ZODB 3.6.  I don't see what I could be doing
> wrong at the app level to cause it.
>
>       SystemError: object at 0x2aaab031dc00 with type
> BTrees._OOBTree.OOBucket not in the cache despite that we just
> unghostified it

The only known cause for that was first discovered in comment #32(!) here:

    http://www.zope.org/Collectors/Zope/1350

If you were running a debug build, the process would have stopped
after printing this message:

    The only known cause is multiple threads trying to ghost and
    unghost the object simultaneously.
    That's not legal, but ZODB can't stop it.
    See Collector #1350.

That's a thread-related bug in code calling ZODB.  There's nothing
ZODB can do to stop or repair it, and ZODB can't even detect it
reliably.  The ZODB code that unghostifies an object "immediately"
checks right after to verify that the unghostified object is in the
ZODB cache.  If it isn't, you get this message.  The only way for that
to happen is if some /other/ thread sneaks in during the "immediately"
window and ghosts the object again -- or something even more bizarre
than that happened, but no such other mechanism is known.


More information about the ZODB-Dev mailing list