[Zope-dev] ZEO cache instrumentation -- any takers?
Jeremy Hylton
jeremy@zope.com
Thu, 3 Oct 2002 00:11:18 -0400
>>>>> "LRA" == Leonardo Rochael Almeida <leo@hiper.com.br> writes:
LRA> The last two installations belong to the same client, and are
LRA> both experiencing a problem that I believe is related to ZEO
LRA> latency. Both sites depend heavily on a single ZCatalog for
LRA> operation (one ZCatalog hit in almost every page, with some
LRA> pages with more than one ZCatalog hit). When site content is
LRA> being managed, we're hitting ReadConflict errors (They read
LRA> like this: ZODB.POSException.ReadConflictError on database read
LRA> conflict error (oid000000000004c0a4, class
LRA> BTrees.OOBTree.OOBucket)). The reference to BTrees makes me
LRA> think this is ZCatalog related, we don't use BTrees ourselves
LRA> anywhere else and we only use regular Folders as bases for our
LRA> folderish objects, and managing content causes the reindexing
LRA> of objects. Which I think is what is triggering the conflict
LRA> errors.
Your analysis sounds correct. A read conflict occurs when on thread
modifies an object while another thread is reading it (subject to
certain other conditions that probably aren't relevant). I assume
several users are managing content at the same time.
If Zope gets a read conflict, it will retry the transaction. So you
must get very unlikely in order to see the error. Each time the
transaction is retried, something must go wrong.
Are there a lot of concurrent transactions? Or do the updates affect
a large number of objects at once? If either is true, it seems like
it would make the problem more likely to occur.
Jeremy