/** * * * Registers an event lister to capture when new connections are oppened * This method uses console.log, but in an production environment you'd probably * use a async log write such as winston since console.log is blocking * */ registerThreadCounter() { this.internalPool.on('connection', (connection) => console.log(`New connection stablished with server on thread #${connection.threadId}`)) }
server.listen(common.fakeServerPort, function (err) { assert.ifError(err); var count = 0; var threadId = -1; pool.on('release', function (connection) { count++; threadId = connection.threadId; }); pool.getConnection(function (err, connection) { assert.ifError(err); assert.ok(connection); assert.equal(count, 0); connection.release(); assert.equal(count, 1); assert.equal(threadId, connection.threadId); pool.end(function (err) { assert.ifError(err); server.destroy(); }); }); });
db.getConnection((err, conn) => { if (err) { console.log(err); return; } console.log("DB: connection established. Thread id - " + conn.threadId); });
server.listen(common.fakeServerPort, function(err){ assert.ifError(err); pool.getConnection(function(err, conn){ assert.ifError(err); assert.equal(conn.threadId, 1); conn.release(); // server destroys connection in pool // read ECONNRESET serverConn.destroy(); pool.getConnection(function(err, conn){ assert.ifError(err); assert.equal(++seq, 1); assert.equal(conn.threadId, 2); conn.ping(function(err){ assert.ifError(err); conn.release(); }); }); pool.getConnection(function(err, conn){ assert.ifError(err); assert.equal(++seq, 2); assert.equal(conn.threadId, 2); server.destroy(); }); }); });
connection.threadId ] = this.getTimestamp();
function handle_database(req, res) { pool.getConnection((err, connection) => { if (err) { connection.release(); res.json({ 'code': 100, 'status': 'Error in connection database', }); return; } console.log('Connected as id', connection.threadId); connection.query('SELECT * FROM news', (err, rows) => { connection.release(); if (!err) { return res.json(rows); } }); connection.on('error', err => { res.json({ 'code': 100, 'status': 'Error in connection database', }); return; }); }); }
con.threadId ] = this.getTimestamp();
assert.ok(conn0.threadId === 1 || conn0.threadId === 2); assert.ok(conn1.threadId === 1 || conn1.threadId === 2); var threadId = conn1.threadId; assert.strictEqual(conn1.threadId, threadId); assert.strictEqual(conn2.threadId, threadId); assert.ok(conn3.threadId === 1 || conn3.threadId === 2); conn2.release(); conn3.release();
server.listen(common.fakeServerPort, function (err) { assert.ifError(err); var count = 0; var threadId = -1; pool.on('acquire', function (connection) { count++; threadId = connection.threadId; }); pool.getConnection(function (err, connection) { assert.ifError(err); assert.ok(connection); assert.equal(count, 1); assert.equal(threadId, connection.threadId); connection.release(); }); pool.getConnection(function (err, connection) { assert.ifError(err); assert.ok(connection); assert.equal(count, 2); assert.equal(threadId, connection.threadId); connection.release(); pool.end(function (err) { assert.ifError(err); server.destroy(); }); }); });
server.listen(common.fakeServerPort, function(err){ assert.ifError(err); pool.getConnection(function(err, conn){ assert.ifError(err); assert.equal(conn.threadId, 1); conn.release(); // fail the next ping fail = true; pool.getConnection(function(err, conn){ assert.ifError(err); assert.equal(++seq, 1); assert.equal(conn.threadId, 2); assert.equal(fail, false); conn.ping(function(err){ assert.ifError(err); conn.release(); }); }); pool.getConnection(function(err, conn){ assert.ifError(err); assert.equal(++seq, 2); assert.equal(conn.threadId, 2); server.destroy(); }); }); });
server.listen(common.fakeServerPort, function (err) { assert.ifError(err); pool.getConnection(function (err, conn) { assert.ifError(err); assert.equal(conn.threadId, 1); conn.release(); // lag the next ping fail = true; pool.getConnection(function(err, conn){ assert.ifError(err); assert.equal(++seq, 1); assert.equal(conn.threadId, 2); assert.equal(fail, false); conn.ping(function(err){ assert.ifError(err); conn.release(); }); }); pool.getConnection(function(err, conn){ assert.ifError(err); assert.equal(++seq, 2); assert.equal(conn.threadId, 2); server.destroy(); }); }); });