[ZODB-Dev] Re: ReadConflictError while re-indexing big fat index

Chris Withers chris at simplistix.co.uk
Mon Aug 2 10:55:57 EDT 2004


Casey Duncan wrote:
>>1. What is the above error message really trying to tell me?
>>    (it's a pretty obscure message ;-)
> 
> It is telling you that an ISet object in the PathIndex was changed and
> commited by another client since the transaction began. In order to
> protect data integrity, ZODB does not allow such "dirty reads", instead
> it raises a ReadConflict error.

Heh, now that I finally understand this, it seems like ZODB isn't as 
perfect as I thought ;-) You kinda take this stuff for granted with any 
RDB, the I in ACID and all that...

> You probably will need to reindex incrementally instead of in one big
> transaction. You might also need to "throttle back" the reindex speed so
> that it does not cause excessive read conflicts in the other clients.

But how do I do either of those things?

I presume you mean index objects in batches with a commit in between?
But that creates an inconsistent state surely?

>>3. (Because I figure it's kinda relevent here and I like asking
>>     questions in 3's ;-)
>>    When is MVCC due to land and will it help with this problem?
> 
> Yup, that's the plan. MVCC is already in ZODB 3.3. Zope 2.8 will use the
> new ZODB.

Can ZODB 3.3 get transplanted into Zope 2.7?

Also, what's the status of the 2.8 release plan? Suddenly I want it a 
lot now ;-)

Chris

-- 
Simplistix - Content Management, Zope & Python Consulting
            - http://www.simplistix.co.uk


More information about the ZODB-Dev mailing list