Locking database edit by key name
Posted
by Will Glass
on Stack Overflow
See other posts from Stack Overflow
or by Will Glass
Published on 2010-05-16T17:35:24Z
Indexed on
2010/05/16
17:40 UTC
Read the original article
Hit count: 209
I need to prevent simultaneous edits to a database field. Users are executing a push operation on a structured data field, so I want to sequence the operations, not simply ignore one edit and take the second.
Essentially I want to do
synchronized(key name)
{
push value onto the database field
}
and set up the synchronized item so that only one operation on "key name" will occur at a time. (note: I'm simplifying, it's not always a simple push).
A crude way to do this would be a global synchronization, but that bottlenecks the entire app. All I need to do is sequence two simultaneous writes with the same key, which is rare but annoying occurrence.
This is a web-based java app, written with Spring (and using JPA/MySQL). The operation is triggered by a user web service call. (the root cause is when a user sends two simultaneous http requests with the same key).
I've glanced through the Doug Lea/Josh Bloch/et al Concurrency in Action, but don't see an obvious solution. Still, this seems simple enough I feel there must be an elegant way to do this.
© Stack Overflow or respective owner