AFAIK, a read conflict is raised in this circumstance, so there can't be a dirty read. But again, since requests which raise conflicts are retried, there is never a consistency problem. - C Kapil Thangavelu wrote:
even more generally the problem can be stated as transaction A starts reads a bunch of objects, transaction B starts and will read a set of objects that intersects with transaction A. transaction A commits changing objects that B is about to read (after B has read some objects). B finishes, and has possibly commited or done operations on data that is no longer in sync because the set of data may not have been consistent for its operation, hence the dirty read.
this is a more interesting and IMO legitimate concern, i haven't done any testing recently, but i believe as it currently stands this should throw a ConflictError (i'm not sure, though.). Jim and pythonlabs have talked about setting up some sort MVCC for the zodb, whereby transaction B will see a snapshot of objects as it existed when it began. if you're interested in this further i would send mail to the zodb-dev@zope.org list, referencing this thread.
cheers
kapil
--- Clark OBrien <COBrien@isis-server.vuse.vanderbilt.edu> wrote:
Here is the example I was thinking about.
1) Suppose an online store is selling product X and at a given moment its inventory is n. Two shoppers hit the buy button at about the same time.
Then either:
a) No conflict is detected because both threads set the inventory value to the same value, n-1. This would cause a problem if n = 1
Or: b) A conflict is detected when the last thread writes because the inventory is not n as it was when he read it. request is resubmitted but again another thread has changed made the value dirty- thread starves.
-----Original Message----- From: Chris McDonough [mailto:chrism@zope.com] Sent: Thursday, November 01, 2001 6:50 AM To: Clark OBrien; k_vertigo@yahoo.com; zope@zope.org Subject: Re: [Zope] zope operations atomic?
What is "the dirty read problem"?
__________________________________________________ Do You Yahoo!? Make a great connection at Yahoo! Personals. http://personals.yahoo.com
-- Chris McDonough Zope Corporation http://www.zope.org http://www.zope.com "Killing hundreds of birds with thousands of stones"