> The ZODB is actually very fast. [...] > > So you're probably observing slowness in the frameworks on top of it.
I'll believe this anytime :-] In our case, a transaction may be a workflow state change on say 50 objects. Two or three people try a transaction like that within a couple of seconds of one another, and ConflictErrors crop up. In a log with 402 ConflictErrors, 225 are on BTrees (_IIBTree.IITreeSet, _IOBTree.IOBucket, _OOBTree.OOBTree, _OOBTree.OOBucket all feature). We assume these all relate to catalog indexing. Of the rest, 147 of the 177 are either Products.Transience.Transience.Increaser or Products.Transience.Transience.Length2 The role the framework (Plone, unsurprisingly) is playing in this case, is that it leans hard on the catalog during a transaction lasting a number of seconds. To mitigate this, we want to create a savepoint and then commit more often while iterating and changing workflow, rolling back to the savepoint if necessary. -- jean _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org http://mail.zope.org/mailman/listinfo/zodb-dev