Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

mysql-semaphore

n8j1s190MIT0.1.1

Semaphore for clustered node instances using MySQL

Semaphore, MySQL, clustered

readme

A semaphore handler for Node.js and MySQL. Allows you to generate a semaphore in a clustered Node.js environment using MySQL. This is useful for such things as cron jobs or long running tasks that you only want to occur on a single instance.

Requirements: MySQL server

Installation

npm install mysql-semaphore --save

Initialization:

Refer to node-mysql (https://github.com/felixge/node-mysql/) for MySql configuration settings.

var Semaphore = require('mysql-semaphore');
var semaphore = new Semaphore({host: 'localhost', database: 'mydb', user: 'someuser', password: 'somepassword'});

Before You Begin:

Be aware that this library requires that the lock name be unique for a particular usage. If another application uses the same lock name, a lock could be inadvertantly unlocked. It is recommended that the lock name include application and database name and usage to ensure uniqueness - for example: mydb_myapp_myprocess as the lockName parameter.

Methods:

Get Lock

semaphore.lock('test', 2) //test is the lock name
    .then(function(didLock){
        //didLock will be true if lock is successful, false if unable to attain a lock
        console.log(didLock);
    })
    .catch(function(err){
        console.log(err);
    });

Release Lock

semaphore.unlock('test') //test is the lock name
    .then(function(didUnlock){
        console.log('unlocked!', didUnlock);
    })
    .catch(function(err){
        console.log(err);
    });

Check If Locked

semaphore.islocked('test') //test is the lock name
    .then(function(isLocked){
        console.log('islocked', isLocked);
    })
    .catch(function(err){
        console.log(err);
    })

Tests:

npm test