We recently observed another ZODB cache inconsistency:
The commit of a huge transaction caused our ZEO server to be late
in responding to the HA monitoring probe. The HA monitor responded
with a SIGTERM targeted to the ZEO server. ZEO restarted.
The ZEO client performing the huge transaction reported an
error in the second phase of its commit state.
The ZODB states of other ZEO clients were inconsitent:
some of them had received invalidation messages and saw
the objects modified by the huge transaction with their new
values. Others had not yet received the invalidation messages
and treated the objects as still unchanged.
This means that interrupting ZEO while it is sending invalidation messages
can cause inconsitent states in the ZODB caches of its clients.
I do not know what can be done about it...
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org