Skip to main content
zerotal

Documentation


Documentation / zerotal / lock / ManagedLock

Class: ManagedLock

Defined in: packages/core/src/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: packages/core/src/lock/LockManager.ts:46

Parameters

_key

string

_ttl

number

_driver

LockDriver

Returns

ManagedLock

Acquiring

acquire()

acquire(): Promise<boolean>

Defined in: packages/core/src/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: packages/core/src/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: packages/core/src/lock/LockManager.ts:111

The logical lock name.

Returns

string


isAcquired

Get Signature

get isAcquired(): boolean

Defined in: packages/core/src/lock/LockManager.ts:115

Whether this instance currently believes it holds the lock.

Returns

boolean

Releasing

release()

release(): Promise<void>

Defined in: packages/core/src/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: packages/core/src/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>