LSS: Lock State Service
A small HTTP service for managing distributed locks. Useful for keeping pipelines, cron jobs, or system scripts from stepping on each other.
(moved from lock-states.deno.dev due to deno deploy end-of-life)
What It Does
LSS lets you create, check, and toggle locks over a simple REST API. No SDKs, no setup - just curl it.
Common Use Cases
- GitHub Actions Block QA deployments while E2E tests are running.
- Cron Jobs Skip a run if another process is active.
- Ad-hoc System Locks Pause scripts or maintenance tasks until certain conditions are met.
API
Create a Lock
POST https://lock-states.worotyns.deno.net/locks
Params:
l=true|1|T- start lockede=ttl_in_seconds- optional TTLk=custom_auth_key- optional custom key
Response:
{
"lockId": "01hvkab4t422rap18rwjs2prnm",
"lockKey": "b749f750-fbe3-11ee-9224-d7fd2399170d"
}
Example (locked for 60s):
curl -X POST "https://lock-states.worotyns.deno.net/locks?l=t&e=60"
Check Lock State
GET https://lock-states.worotyns.deno.net/locks/:lockId
Status codes:
204- unlocked423- locked404- not found
Example:
curl -I https://lock-states.worotyns.deno.net/locks/01hvkab4t422rap18rwjs2prnm
Lock / Unlock
Lock:
curl -X PATCH "https://lock-states.worotyns.deno.net/locks/:lockId/lock?k=:lockKey"
Unlock:
curl -X PATCH "https://lock-states.worotyns.deno.net/locks/:lockId/unlock?k=:lockKey"
Optional e=ttl_in_seconds for temporary locks.
Real Example
Pipeline Wait Step
- name: wait for lock
run: |
curl --head -X GET --fail \
--retry 300 --retry-connrefused --retry-all-errors \
--retry-delay 30 \
https://lock-states.worotyns.deno.net/locks/:lockId
QA Locking
QA team locks the test environment during runs, blocking redeployments until tests finish. Once the lock clears, deployments resume.
LSS - a minimal lock service for when you just need stuff to wait.