Skip to content

Commit

Permalink
Ensure we close DB when server is closed
Browse files Browse the repository at this point in the history
  • Loading branch information
mhart committed Apr 29, 2015
1 parent 4a377ac commit 1909053
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 8 deletions.
8 changes: 5 additions & 3 deletions db/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ function create(options) {
if (options.updateStreamMs == null) options.updateStreamMs = 500
if (options.shardLimit == null) options.shardLimit = 10

var db = sublevel(levelup(options.path)),
metaDb = db.sublevel('meta', {valueEncoding: 'json'}),
var db = levelup(options.path),
sublevelDb = sublevel(db),
metaDb = sublevelDb.sublevel('meta', {valueEncoding: 'json'}),
streamDbs = []

metaDb.lock = new Lock()
Expand All @@ -40,7 +41,7 @@ function create(options) {

function getStreamDb(name) {
if (!streamDbs[name]) {
streamDbs[name] = db.sublevel('stream-' + name, {valueEncoding: 'json'})
streamDbs[name] = sublevelDb.sublevel('stream-' + name, {valueEncoding: 'json'})
streamDbs[name].lock = new Lock()
}
return streamDbs[name]
Expand Down Expand Up @@ -76,6 +77,7 @@ function create(options) {
deleteStreamMs: options.deleteStreamMs,
updateStreamMs: options.updateStreamMs,
shardLimit: options.shardLimit,
db: db,
metaDb: metaDb,
getStreamDb: getStreamDb,
deleteStreamDb: deleteStreamDb,
Expand Down
17 changes: 14 additions & 3 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,27 @@ module.exports = kinesalite

function kinesalite(options) {
options = options || {}
var requestHandler = httpHandler.bind(null, db.create(options))
var server, store = db.create(options), requestHandler = httpHandler.bind(null, store)

if (options.ssl) {
options.key = options.key || fs.readFileSync(__dirname + '/key.pem')
options.cert = options.cert || fs.readFileSync(__dirname + '/cert.pem')
options.ca = options.ca || fs.readFileSync(__dirname + '/ca.pem')
return https.createServer(options, requestHandler)
server = https.createServer(options, requestHandler)
} else {
server = http.createServer(requestHandler)
}

return http.createServer(requestHandler)
// Ensure we close DB when we're closing the server too
var httpServerClose = server.close
server.close = function(cb) {
store.db.close(function(err) {
if (err) return cb(err)
httpServerClose.call(server, cb)
})
}

return server
}

validOperations.forEach(function(action) {
Expand Down
2 changes: 1 addition & 1 deletion test/connection.js
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ describe('kinesalite connections', function() {

done = once(done)

https.request({host: 'localhost', port: port, rejectUnauthorized : false}, function(res) {
https.request({host: '127.0.0.1', port: port, rejectUnauthorized : false}, function(res) {
res.on('error', done)
res.on('data', function() {})
res.on('end', function() {
Expand Down
6 changes: 5 additions & 1 deletion test/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ exports.testStream = randomName()
var port = 10000 + Math.round(Math.random() * 10000),
requestOpts = process.env.REMOTE ?
{host: 'kinesis.' + exports.awsRegion + '.amazonaws.com', method: 'POST', ssl: true} :
{host: 'localhost', port: port, method: 'POST'}
{host: '127.0.0.1', port: port, method: 'POST'}

var kinesaliteServer = kinesalite({path: process.env.KINESALITE_PATH})

Expand Down Expand Up @@ -119,6 +119,7 @@ function assertType(target, property, type, done) {
switch(type) {
case 'Boolean':
msgs = [
['23', '\'23\' can not be converted to an Boolean'],
[23, 'class java.lang.Short can not be converted to an Boolean'],
[-2147483648, 'class java.lang.Integer can not be converted to an Boolean'],
[2147483648, 'class java.lang.Long can not be converted to an Boolean'],
Expand Down Expand Up @@ -171,6 +172,7 @@ function assertType(target, property, type, done) {
break
case 'List':
msgs = [
['23', 'Expected list or null'],
[true, 'Expected list or null'],
[23, 'Expected list or null'],
[-2147483648, 'Expected list or null'],
Expand All @@ -181,6 +183,7 @@ function assertType(target, property, type, done) {
break
case 'Map':
msgs = [
['23', 'Expected map or null'],
[true, 'Expected map or null'],
[23, 'Expected map or null'],
[-2147483648, 'Expected map or null'],
Expand All @@ -191,6 +194,7 @@ function assertType(target, property, type, done) {
break
case 'Structure':
msgs = [
['23', 'Expected null'],
[true, 'Expected null'],
[23, 'Expected null'],
[-2147483648, 'Expected null'],
Expand Down

0 comments on commit 1909053

Please sign in to comment.