cross-process-lock
v2.1.1
Published
Cross-process file locking solution with lock-queue
Downloads
37,915
Readme
cross-process-lock
Cross-process file locking solution with lock-queue
Usage
const { lock } = require('cross-process-lock');
const { writeFileSync } = require('fs');
// create a lock for the given file
const unlock = await lock('file.txt')
// do smth with the file here
writeFileSync('file.txt', 'some content', 'utf8');
// unlock file with the received function
return unlock();
API
Lock
lock(file[, options])
- creates a lock for the given file for the actual process
Arguments:
{string} file
- the path of the file needs to be locked{lockOptions} options
- the options to use to lock file, e.g timeouts
Returns: Promise<Function>
- resolved with unlock
function in case of successful lock; rejected in case of file couldn't be lock in the given timeout
Unlock
unlock(file)
- deletes the lock for the given file for the actual process
Arguments:
{string} file
- the path of the file needs to be unlocked
Returns: Promise
- resolved in case of successful unlock or rejected in case of any error
WithLock
withLock(file[, options], callback)
- executes the callback with locking before and unlocking after the execution
Arguments:
{string} file
- path of the file needs to be locked{lockOptions} options
- the options to use to lock file, e.g timeouts{() => Promise<T>} callback
- the function to be executed
Returns: Promise<T>
- resolved/rejected with the result of the callback
lockOptions
| Option | Description | Default |
| :--------------------- | :--------------------------------------------- | :--------: |
| lockTimeout {number}
| timeout (ms) when locks automatically released | 20 minutes |
| waitTimeout {number}
| timeout (ms) until lock waits to lock a file | 10 seconds |
Debug
The package uses the debug NPM package with cross-process-lock:PID
name, where PID
is the process ID of the current process.
To enable debug logging, use for example the DEBUG=cross-process-lock:*
environment variable, but for more information, check the documentation of the debug package.