From 9c87253aff3609dd3444d53ce5878b1112c7c646 Mon Sep 17 00:00:00 2001 From: "Brian M. Carlson" Date: Sat, 12 Apr 2014 00:29:20 -0500 Subject: [PATCH] Fix memory leak with domains --- lib/native/query.js | 3 +++ lib/pool.js | 14 -------------- lib/query.js | 3 +++ 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/lib/native/query.js b/lib/native/query.js index 5436f02a..55b3262b 100644 --- a/lib/native/query.js +++ b/lib/native/query.js @@ -19,6 +19,9 @@ var NativeQuery = function(config, values, callback) { this.text = c.text; this.values = c.values; this.callback = c.callback; + if(process.domain && c.callback) { + this.callback = process.domain.bind(c.callback); + } this.singleRowMode = false; if(!this.callback) { diff --git a/lib/pool.js b/lib/pool.js index e2fe2227..67140e6b 100644 --- a/lib/pool.js +++ b/lib/pool.js @@ -64,23 +64,9 @@ var pools = { pool.acquire(function(err, client) { if(domain) { cb = domain.bind(cb); - domain.add(client); - //native clients do not have a connection object - if(client.connection) { - domain.add(client.connection); - domain.add(client.connection.stream); - } } if(err) return cb(err, null, function() {/*NOOP*/}); cb(null, client, function(err) { - if(domain) { - //native clients do not have a connection object - if(client.connection) { - domain.remove(client.connection.stream); - domain.remove(client.connection); - } - domain.remove(client); - } if(err) { pool.destroy(client); } else { diff --git a/lib/query.js b/lib/query.js index 03843cee..0c6bbc70 100644 --- a/lib/query.js +++ b/lib/query.js @@ -20,6 +20,9 @@ var Query = function(config, values, callback) { //use unique portal name each time this.portal = config.portal || ""; this.callback = config.callback; + if(process.domain && config.callback) { + this.callback = process.domain.bind(config.callback); + } this._fieldNames = []; this._fieldConverters = []; this._result = new Result(config.rowMode);