Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dustin/elock
A simple, fault-tolerant distributed lock server in erlang.
https://github.com/dustin/elock
Last synced: about 2 months ago
JSON representation
A simple, fault-tolerant distributed lock server in erlang.
- Host: GitHub
- URL: https://github.com/dustin/elock
- Owner: dustin
- Created: 2008-05-29T07:35:41.000Z (over 16 years ago)
- Default Branch: master
- Last Pushed: 2021-10-18T17:27:10.000Z (about 3 years ago)
- Last Synced: 2024-10-11T14:15:31.311Z (2 months ago)
- Language: Erlang
- Homepage: http://dustin.github.com/elock/
- Size: 34.2 KB
- Stars: 66
- Watchers: 6
- Forks: 12
- Open Issues: 1
-
Metadata Files:
- Readme: README.markdown
Awesome Lists containing this project
README
# A Simple Distributed Lock Server
This is still an early project, but the goal is pretty simple:
A simple, distributed, fault-tolerant lock server.
# Commands:
## lock
Lock has two forms. The first is a non-blocking form that either tells you
the lock is already taken, or acquires it.lock lock_name
The second form allows you to wait for a certain number of seconds for the
lock to become available:lock lock_name timeout_in_seconds
Possible return values:
* 200 - Lock has been acquired
* 409 - The resource is locked -- you loseAny acquired lock will be held until it's specifically unlocked, unlocked with
unlock\_all, or the client disconnects.## unlock
Unlock releases the lock with the given key if the current client has acquired
that lock:unlock lock_name
Possible return values:
* 200 - The lock has been released
* 403 - You do not own this lock (therefore you didn't release it)## unlock\_all
Release any locks this client may be holding.
Possible return values:
* 200 - It just blows it all away
## conn\_id
Retrieve your current session ID. This may be resumed later.
Returns:
* 200 [some\_string]
## conn\_id [string]
Attempts to set your connection ID to the given value.
This allows you to resume a session if you get disconnected.
Returns:
* 200 - Resumed
* 403 - Could not resume connection (you either already have a new one, or
that one belongs to someone else)## set\_timeout [integer]
Set the amount of time after disconnect (in milliseconds) before your locks
are all automatically freed. Default is 30,000 (30 seconds).Returns:
* 200 - the new value was set
## quit
Disconnect your connection.
## stats
Get some server stats.
Returns:
* 200 STATS - beginning of a stat stream (see below)
The stats output is multi-line, so the protocol handling is a little different
from all of the other commands.The initial response is
200 STATS
which is followed by several values in the following form:
STAT [key] [value]
and then one terminating value:
END
A complete example is as follows:
200 STATS
STAT clients 0
STAT locks 0
STAT monitoring 0
END