1.2.1 • Published 8 years ago

2pl v1.2.1

Weekly downloads
35
License
MIT
Repository
github
Last release
8 years ago

2PL

In-memory two-phase locking for asynchronous JavaScript functions.

Build Status

npm install 2pl

Multiple lock keys can be acquired during the lifetime of a lock instance, where release is done in one operation.

var lock = require('2pl')
var shared = {} // in-memory lock object shared across instances

var l = lock(shared, { ttl: 5000 }) // new instance, 5 seconds timeout

l.acquire('a', function (err) {
  // a is locked
  l.acquire('b', function (err) {
    // b is locked
    l.release(function (err) {
      // a and b are released
    })
  })
})

API

var l = lock(shared, options)

Create a new instance with shared object holding the in-memory locks. Accepts following options:

  • ttl: Time to live (milliseconds) of lock instance for liveness. Defaults to 20 seconds.

l.acquire(key, callback)

Attempts to acquire a lock, given a string key. Accepts an optional callback function, invoked on success or error.

l.extend(ttl, callback)

Attempts to extend ttl of lock in milliseconds. Accepts an optional callback function, invoked on success or error.

l.release(callback)

Attempts to release lock. Accepts an optional callback function, invoked on success or error.

var createLock = lock.creator(options)

Returns a factory function createLock([options]) that create instances under the same shared lock object.

var createLock = lock.creator({ ttl: 5000 })

var l1 = createLock() // ttl 5000
var l2 = createLock({ ttl: 500 }) // ttl 500

License

MIT

1.2.1

8 years ago

1.2.0

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago

0.0.2

9 years ago

0.0.1

9 years ago