[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