mongo-statsd-backend
Advanced tools
Comparing version 0.0.1 to 0.0.2
var async = require('async'), | ||
mongo = require('mongodb'), | ||
util = require('util'), | ||
dbs = {}, | ||
options = { | ||
@@ -13,2 +14,19 @@ debug: false, | ||
var database = function(name, callback) { | ||
if(dbs[name]) { | ||
util.log('mongo-statsd-backend: re-using database ' + name); | ||
callback(null, dbs[name]); | ||
} else { | ||
util.log('mongo-statsd-backend: creating database ' + name); | ||
new mongo.Db(name, new mongo.Server(options.host, 27017)).open(function(err, db) { | ||
if (err) { | ||
callback(err); | ||
} else { | ||
dbs[name] = db; | ||
callback(null, db); | ||
} | ||
}); | ||
} | ||
}; | ||
var prefix = function(metric) { | ||
@@ -73,3 +91,3 @@ return (options.prefix ? metric.split('.').shift() : options.name); | ||
new mongo.Db(db_name, new mongo.Server(options.host, 27017, {auto_reconnect: true, poolSize: 4})).open(function(err, db) { | ||
database(db_name, function(err, db) { | ||
if(err) { | ||
@@ -83,5 +101,7 @@ callback(err); | ||
col.insert(doc, function(err, items) { | ||
if(err) callback(err); | ||
db.close(); | ||
if(err) { | ||
callback(err); | ||
} else { | ||
callback(null); | ||
} | ||
}); | ||
@@ -95,10 +115,11 @@ } | ||
var onFlush = function(time_stamp, metrics) { | ||
var start = new Date().getTime(); | ||
if(options.debug) util.log('mongo-statsd-backend: flush() event'); | ||
['gauges', 'timers', 'counters'].forEach(function(t) { | ||
for(var k in metrics[t]) { | ||
aggregate[t]( | ||
var q = async.queue(function(task, callback) { | ||
aggregate[task.t]( | ||
time_stamp, | ||
k, | ||
metrics[t][k], | ||
task.k, | ||
metrics[task.t][task.k], | ||
function(err, db_name, col_name, doc) { | ||
@@ -112,4 +133,15 @@ insert( | ||
if(err) util.log('mongo-statsd-backend: (error)' + err); | ||
callback(); | ||
}); | ||
}); | ||
}, 1); | ||
q.drain = function() { | ||
if(options.debug) util.log('mongo-statsd-backend: queue emptied.'); | ||
}; | ||
['gauges', 'timers', 'counters'].forEach(function(t) { | ||
for(var k in metrics[t]) { | ||
if(options.debug) util.log('mongo-statsd-backend: queuing ' + t + ', ' + k); | ||
q.push({t: t, k: k}); | ||
} | ||
@@ -116,0 +148,0 @@ }); |
@@ -5,3 +5,3 @@ { | ||
"name": "mongo-statsd-backend", | ||
"version": "0.0.1", | ||
"version": "0.0.2", | ||
"main": "lib/index.js", | ||
@@ -8,0 +8,0 @@ "dependencies": { |
6513
147