Documentation / @zerotal/core / lock / ManagedLock
Class: ManagedLock
Defined in: lock/LockManager.ts:42
A single named lock instance.
Each instance holds a unique owner token so that release is always
owner-guarded — a process that held a lock which expired cannot accidentally
release the lock of a new holder that acquired it during the gap.
Example
const lock = manager.lock('invoice:123', 10);
await lock.acquire(); // try once → returns boolean
await lock.block(30); // wait up to 30s → throws on timeout
await lock.release(); // release (no-op if not acquired or expired)
await lock.forceRelease(); // unconditionally remove
Constructors
Constructor
new ManagedLock(
_key,_ttl,_driver):ManagedLock
Defined in: lock/LockManager.ts:46
Parameters
_key
string
_ttl
number
_driver
Returns
ManagedLock
Acquiring
acquire()
acquire():
Promise<boolean>
Defined in: lock/LockManager.ts:60
Try to acquire exactly once. Returns true on success. Re-acquiring while
this same instance already holds the key refreshes it (returns true).
Returns
Promise<boolean>
block()
block(
timeoutSeconds,retryDelayMs?):Promise<void>
Defined in: lock/LockManager.ts:74
Block until the lock can be acquired or timeoutSeconds elapses, polling
every retryDelayMs.
Parameters
timeoutSeconds
number
Maximum seconds to wait before giving up.
retryDelayMs?
number = 100
Milliseconds between acquire attempts (default 100).
Returns
Promise<void>
Throws
On timeout.
Other
key
Get Signature
get key():
string
Defined in: lock/LockManager.ts:111
The logical lock name.
Returns
string
isAcquired
Get Signature
get isAcquired():
boolean
Defined in: lock/LockManager.ts:115
Whether this instance currently believes it holds the lock.
Returns
boolean
Releasing
release()
release():
Promise<void>
Defined in: lock/LockManager.ts:93
Release the lock. Owner-guarded at the driver level, so it only removes the lock if this instance still holds it. No-op when this instance never acquired it or it already expired.
Returns
Promise<void>
forceRelease()
forceRelease():
Promise<void>
Defined in: lock/LockManager.ts:105
Unconditionally remove the lock regardless of who holds it. Use with care — it can release a lock owned by another holder.
Returns
Promise<void>