What happens when a 2nd process tries to write to a record/table that is locked? Does it stall until the lock is released or does it throw an exception?
On Friday, April 6, 2012 3:18:37 AM UTC-7, Frederick Cheung wrote: > > > > On Apr 4, 12:47 am, PierreW <[email protected]> wrote: > > I don't know if using pessimistic locking is the best way to do it, > > but here is why I used this: > > > > - every X hours a demon runs and updates records > > - thing is, this demon "action" can last Y with Y > X > > > > So there is a risk that two instances of the demon try to update the > > same record. So each demon needs to acquire the lock before they can > > do anything on a given record. > > > > I guess an alternative could be to try and make sure that a demon only > > starts if the previous one has finished but this was not an option in > > my case. > > > > You might want to look at separating the concept of the SQL lock > (which do have costs, can land you with deadlocks etc) from the > application level lock. > > You could have a locked column (better a locked_since column) that > indicates that the row is locked. Use optimistic or pessimistic > locking to update the locked_since column, and make your update stuff > ignore records with a non null locked_since > > > Fred > > > On Apr 4, 12:37 am, Robert Walker <[email protected]> wrote: > > > > > > > > > > > > > > > > > wam r. wrote in post #1054714: > > > > > > Hi guys, > > > > > > I must be missing something obvious with pessimistic locking. Here > is > > > > what I do (Rails 2.3, mySQL): > > > > > So is there a reasonable use case for pessimistic locking on a web > > > application? That seems insane to me. > > > > > -- > > > Posted viahttp://www.ruby-forum.com/. -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/qSI75OgjsmMJ. For more options, visit https://groups.google.com/groups/opt_out.

