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

Most upvoted comments

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

Db.prototype.Verify= function Verify(email)
{
  
   const connection = await  this.pool.getConnection();
       try
       {
   		
          const [password] = await connection.execute("SELECT password from `user` where email=?",email);           
           connection.release();
           return password;
       }
       catch(ex)
       {
   	connection.release();
           return Promise.reject({exception : ex,error : new Error(ex)});
       }

   });