diff --git a/lib/connection.js b/lib/connection.js index 785796c1f50..6cdd4e64dc5 100644 --- a/lib/connection.js +++ b/lib/connection.js @@ -643,6 +643,12 @@ Connection.prototype.openUri = function(uri, options, callback) { if (options.useUnifiedTopology) { if (type === 'Single') { const server = Array.from(db.s.topology.s.servers.values())[0]; + server.s.pool.on('close', () => { + _this.readyState = STATES.disconnected; + }); + server.s.topology.on('serverHeartbeatSucceeded', () => { + _handleReconnect(); + }); server.s.pool.on('reconnect', () => { _handleReconnect(); }); diff --git a/test/connection.test.js b/test/connection.test.js index 6a4a61a4697..f7c4a4e4852 100644 --- a/test/connection.test.js +++ b/test/connection.test.js @@ -189,7 +189,7 @@ describe('connections:', function() { let numReconnected = 0; let numReconnect = 0; let numClose = 0; - const conn = mongoose.createConnection('mongodb://localhost:27000/mongoosetest', { + const conn = mongoose.createConnection('mongodb://localhost:27000/mongoosetest?heartbeatfrequencyms=1000', { useNewUrlParser: true, useUnifiedTopology: true });