[Zope-dev] Cache growing during single REQUEST

Tim Peters tim at zope.com
Fri Sep 12 00:50:50 EDT 2003


[Toby Dickenson]
>> You get a ReadConflictError when loading an object if it has been
>> modified since the start of the transaction. This exception
>> therefore becomes increasingly likely as time progresses since the
>> start of the transaction.

[Chris Withers]
> What's the thing Zope Corp are touting as the long term solution to
> this problem?

"Multiversion concurrency control" (MVCC for short) is the next step.  If no
other crises intervene, Jeremy and I will start implementing that on the
ZODB3 3.2 branch (most likely that branch -- can't swear to it) soon
(ditto).

You can google on the phrase to get a ton of more-or-less abstract overviews
of the concept.  The short course in ZODB is that, when MVCC is in effect, a
read will return the state of the object as of the time the current
transaction began, even if the object has subsequently been modified by some
other transaction.

The overriding concern in all schemes is that you don't see inconsistent
data.  The current ReadConflictError prevents you from seeing inconsistent
data by preventing you from loading objects that have changed since your
current transaction began.  MVCC prevents it by (possibly) delivering
non-current object states.  I don't think either can be viewed as a pure
win.  The ways in which ReadConflictError loses are obvious to people here
because they've experienced them.  The ways in which MVCC loses will become
obvious later <0.9 wink>.




More information about the Zope-Dev mailing list