-
Type:
Bug
-
Resolution: Done
-
Priority:
Major - P3
-
Affects Version/s: 2.0.27, 2.0.28
-
Component/s: None
-
Environment:node-v0.10.29
-
None
-
None
-
None
-
None
-
None
-
None
-
None
switching the default database on an open connection will quickly start
emitting "too many listeners" node warnings. There needs to be a way of
removing the listeners that are no longer needed.
The context is a server where each request first selects the db to
access the correct collections. There are many dbs and many
concurrent requests.
to reproduce:
mongoClient = require('mongodb').MongoClient; mongoClient.connect("mongodb://localhost", function(err, db) { for (i=0; i<10; i++) { db.db("test") } db.close(); });
outputs 7 warnings from a set of mostly adjacent lines:
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at addListener (events.js:160:15)
at once (events.js:185:8)
at new Db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:163:12)
at Db.db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:783:12)
at /home/andras/mongo-listener-test.js:5:8
at /home/andras/node_modules/mongodb-2.0.28/lib/mongo_client.js:403:11
at process._tickCallback (node.js:419:13)
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at addListener (events.js:160:15)
at once (events.js:185:8)
at new Db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:164:12)
at Db.db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:783:12)
at /home/andras/mongo-listener-test.js:5:8
at /home/andras/node_modules/mongodb-2.0.28/lib/mongo_client.js:403:11
at process._tickCallback (node.js:419:13)
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at addListener (events.js:160:15)
at once (events.js:185:8)
at new Db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:165:12)
at Db.db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:783:12)
at /home/andras/mongo-listener-test.js:5:8
at /home/andras/node_modules/mongodb-2.0.28/lib/mongo_client.js:403:11
at process._tickCallback (node.js:419:13)
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at addListener (events.js:160:15)
at once (events.js:185:8)
at new Db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:166:12)
at Db.db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:783:12)
at /home/andras/mongo-listener-test.js:5:8
at /home/andras/node_modules/mongodb-2.0.28/lib/mongo_client.js:403:11
at process._tickCallback (node.js:419:13)
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at addListener (events.js:160:15)
at once (events.js:185:8)
at new Db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:168:12)
at Db.db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:783:12)
at /home/andras/mongo-listener-test.js:5:8
at /home/andras/node_modules/mongodb-2.0.28/lib/mongo_client.js:403:11
at process._tickCallback (node.js:419:13)
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at addListener (events.js:160:15)
at once (events.js:185:8)
at new Db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:169:12)
at Db.db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:783:12)
at /home/andras/mongo-listener-test.js:5:8
at /home/andras/node_modules/mongodb-2.0.28/lib/mongo_client.js:403:11
at process._tickCallback (node.js:419:13)
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at addListener (events.js:160:15)
at new Db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:170:12)
at Db.db (/home/andras/node_modules/mongodb-2.0.28/lib/db.js:783:12)
at /home/andras/mongo-listener-test.js:5:8
at /home/andras/node_modules/mongodb-2.0.28/lib/mongo_client.js:403:11
at process._tickCallback (node.js:419:13)