Disclaimer: I already asked this question, but without the deployment requirement. I got an answer that got 3 upvotes, and when I edited the question to include the deployment requirement the answer then became irrelevant. The reason I'm resubmitting is because SO considers the original question 'answered', even though I got no meaningful upvoted answer. I opened a uservoice submission about this problem. The reason I reposted is so StackOverflow consider the original question answered, so it doesn't show up on the 'unanswered questions' tab.
Which distributed lock service would you use?
Requirements are:
- A mutual exclusion (lock) that can be seen from different processes/machines
- lock...release semantics
- Automatic lock release after a certain timeout - if lock holder dies, it will automatically be freed after X seconds
- Java implementation
- Easy deployment - must not require complicated deployment beyond either Netapp, MySql or GigaSpaces. Must play well with those products (especially GigaSpaces - this is why TerraCotta was ruled out).
- Nice to have: .Net implementation
- If it's free: Deadlock detection / mitigation
I'm not interested in answers like "it can be done over a database", or "it can be done over JavaSpaces" - I know. Relevant answers should only contain a ready, out-of-the-box, proven implementation.