> Something subtler than I've been able to figure out yet is going wrong,
> so I made a tim-savepoint branch. All the tests pass, but ...
Brrrrr. The pickle cache invalidate method (which is coded in C, so isn't
visible from pdb) clears the dictionary passed to it, and when using a
savepoint more than once that can end up clearing the index of the TmpStore
holding the savepoint'ed data. Then the TmpStore no longer believes it
holds any objects, so after that point acts as if no savepoints had ever
The good news is that, while it was hard to find, it's a one-line repair.
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org