Thursday, October 15, 2009

[Rails] Re: How Does Locking Work?

On Oct 15, 2:34 pm, stack <step...@shortround.net> wrote:
>
> Of course, this can cause, and has caused a race condition.  My
> temporary fix was to add :order => 'RAND()', so that the possibility
> of a collision is reduced, but the possibility is still there.
>
> It seems the lock! might fix this, but I don't understand what really
> happens here.  If I lock! the record, what happens to the second
> employee that tries to pull the record and save it?
>
lock! is a database level lock (ie select ... for update). You get an
exclusive lock on that row that lasts for the duration of the current
transaction (corollary: if you do this outside a transaction it
basically does nothing). If something else tries to read or update
that row that attempt will block until the lock is released (or the
thing waiting for the lock gets bored of waiting)

> Is there another method I should be looking at?

Rails' optimistic locking may also be relevant

Fred
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate