node-mysql2: MaxListenersExceededWarning: Possible EventEmitter memory leak detected
Hi ,
i am using mysql2 with bluebird on nodejs 8.
as
const mysql = require('mysql2/promise');
const Promise = require("bluebird");
config.Promise = Promise;//plus database connection configuration
pool = mysql.createPool(config);
function GetSqlConnection() {
return pool.getConnection().disposer(function(connection) {
connection.release();
});
};
after sometime i get hit by this warning, i get , 11 end listeners added. 11 drain listeners added etc …
at _addListener (events.js:281:19)
at PoolConnection.addListener (events.js:298:10)
at /home/test/servers/v6/project/node_modules/mysql2/promise.js:8:14
at Array.forEach (native)
at inheritEvents (/home/test/servers/v6/project/node_modules/mysql2/promise.js:7:6)
at new PromiseConnection (/home/test/servers/v6/project/node_modules/mysql2/promise.js:37:3)
at /home/test/servers/v6/project/node_modules/mysql2/promise.js:228:17
at /home/test/servers/v6/project/node_modules/mysql2/lib/pool.js:36:14
at _combinedTickCallback (internal/process/next_tick.js:95:7)
at process._tickCallback (internal/process/next_tick.js:161:9)
---------------------------------------------
at process.emitWarning (internal/process/warning.js:154:18)
at _addListener (events.js:289:17)
at PoolConnection.addListener (events.js:298:10)
at /home/test/servers/v6/project/node_modules/mysql2/promise.js:8:14
at Array.forEach (native)
at inheritEvents (/home/test/servers/v6/project/node_modules/mysql2/promise.js:7:6)
at new PromiseConnection (/home/test/servers/v6/project/node_modules/mysql2/promise.js:37:3)
at /home/test/servers/v6/project/node_modules/mysql2/promise.js:228:17
at /home/test/servers/v6/project/node_modules/mysql2/lib/pool.js:36:14
at _combinedTickCallback (internal/process/next_tick.js:95:7)
at process._tickCallback (internal/process/next_tick.js:161:9)
---------------------------------------------
at Pool.getConnection (/home/test/servers/v6/project/node_modules/mysql2/lib/pool.js:35:20)
at /home/test/servers/v6/project/node_modules/mysql2/promise.js:224:14
at Promise._execute (/home/test/servers/v6/project/node_modules/bluebird/js/release/debuggability.js:300:9)
at Promise._resolveFromExecutor (/home/test/servers/v6/project/node_modules/bluebird/js/release/promise.js:483:18)
at new Promise (/home/test/servers/v6/project/node_modules/bluebird/js/release/promise.js:79:10)
at PromisePool.getConnection (/home/test/servers/v6/project/node_modules/mysql2/promise.js:223:10)
at Db.GetSqlConnection (/home/test/servers/v6/project/db.js:34:23)
at Db.verify (/home/test/servers/v6/project/db.js:254:31)
About this issue
- Original URL
- State: closed
- Created 7 years ago
- Reactions: 3
- Comments: 19 (7 by maintainers)
Commits related to this issue
- Fix for #577, Remove listening to events after releasing the connection — committed to aankur/node-mysql2 by aankur 7 years ago
- redo event delegation in promise wrappers to be lazy, self-cleaning fix sidorares/node-mysql2#577 — committed to rhendric/node-mysql2 by rhendric 7 years ago
Same issue right here – any idea for a fix?
@sidorares Well, meanwhile you can merge the fix, so we wont get spammed any errors anymore. You can still investigate the cause (just with removed fix).
i am able to reproduce it without bluebird disposer