
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
level-party
Advanced tools
Open a leveldb handle multiple times, transparently upgrading to use
multileveldown when more than 1 process try to use the same leveldb data directory at once and re-electing a new master when the primary unix socket goes down.
Normally with level, when you try to open
a database handle from more than one process you will get a locking error:
events.js:72
throw er; // Unhandled 'error' event
^
OpenError: IO error: lock /home/substack/projects/level-party/example/data/LOCK: Resource temporarily unavailable
at /home/substack/projects/level-party/node_modules/level/node_modules/level-packager/node_modules/levelup/lib/levelup.js:114:34
With level-party, the database open will automatically drop down to using
multilevel over a unix socket using metadata placed into the level data
directory transparently.
This means that if you have 2 programs, 1 that gets:
const level = require('level-party')
const db = level(__dirname + '/data', { valueEncoding: 'json' })
setInterval(function () {
db.get('a', function (err, value) {
console.log('a=', value)
})
}, 250)
And 1 that puts:
const level = require('level-party')
const db = level(__dirname + '/data', { valueEncoding: 'json' })
const n = Math.floor(Math.random() * 100000)
setInterval(function () {
db.put('a', n + 1)
}, 1000)
and you start them up in any order, everything will just work! No more
IO error: lock exceptions.
$ node put.js & sleep 0.2; node put.js & sleep 0.2; node put.js & sleep 0.2; node put.js & sleep 0.2
[1] 3498
[2] 3502
[3] 3509
[4] 3513
$ node get.js
a= 35340
a= 31575
a= 37639
a= 58874
a= 35341
a= 31576
$ node get.js
a= 35344
a= 31579
a= 37643
a= 58878
a= 35345
^C
Hooray!
level-party does seamless failover. This means that if you create a read-stream and the leader goes down while you are reading that stream level-party will resume your stream on the new leader.
This disables leveldb snapshotting so if your app relies on this you should disable this by setting opts.retry = false:
const db = level('./data', { retry: false }) // will not retry streams / gets / puts if the leader goes down
level-party works on Windows as well using named pipes.
db = level(...)The arguments are exactly the same as level. You will sometimes get a real leveldb handle and sometimes get a multileveldown handle back in the response.
With npm do:
npm install level-party
Level/party is an OPEN Open Source Project. This means that:
Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project.
See the Contribution Guide for more details.
Support us with a monthly donation on Open Collective and help us continue our work.
FAQs
Open a leveldb handle multiple times
The npm package level-party receives a total of 0 weekly downloads. As such, level-party popularity was classified as not popular.
We found that level-party demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.