leveldown: Segfault on close with pending put
I am getting a segfault when I run the following unit test. The segfault doesn’t happen every time I run the test. Any ideas?
var test = require('tape');
var level = require('level');
var path = require('path');
var through2 = require('through2');
var JSONStream = require('JSONStream');
function push(db) {
return through2.obj(function(levelRequest, enc, cb) {
var self = this;
db.put(levelRequest.key, levelRequest.value, {sync:true}, function(error) {
if (error) {
console.log('encountered an error while putting ' + JSON.stringify(levelRequest) + ' on the database: '
+ error);
self.push({result:'error', key: levelRequest.key, msg: error});
} else {
self.push({result:'success', key: levelRequest.key});
}
cb();
});
})
}
test('can push values through a level database', function(t) {
var db = level('./test.db');
var dbify = push(db);
var stringify = JSONStream.stringify(false);
dbify.pipe(stringify).pipe(process.stdout);
dbify.write({key:'hi', value:"wisconsin"});
db.close(function(er) {
if (er) throw er;
t.end();
})
})
About this issue
- Original URL
- State: closed
- Created 9 years ago
- Comments: 53 (42 by maintainers)
The concept is put it(a task) into another process/thread/coroutine(fiber) to run.
Process
: NodeJS Cluster ForkThread
: NodeJs Worker Thread ExperimentalCoroutine(fiber)
: ES6 Generator or Third-party Lib: node-fibers