Skip to content
This repository was archived by the owner on Feb 4, 2022. It is now read-only.

Commit abe0191

Browse files
committed
fix(mongos): fix connection leak when mongos reconnects
Our mongos reconnect logic involved creating a new Server+Pool per proxy per iteration of the reconnect logic. These instances were never cleaned up, resulting in a huge number of connections when the proxies finally reconnected. Fixes NODE-1403
1 parent dd4eb9a commit abe0191

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

lib/topologies/mongos.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,7 @@ function reconnectProxies(self, proxies, callback) {
574574
// Emit joined event
575575
self.emit('joined', 'mongos', _self);
576576
});
577-
} else if (event === 'connect' && self.authenticating) {
577+
} else {
578578
// Move from connectingProxies
579579
moveServerFrom(self.connectingProxies, self.disconnectedProxies, _self);
580580
this.destroy();
@@ -613,6 +613,9 @@ function reconnectProxies(self, proxies, callback) {
613613
})
614614
);
615615

616+
_server.destroy();
617+
removeProxyFrom(self.disconnectedProxies, _server);
618+
616619
// Relay the server description change
617620
server.on('serverDescriptionChanged', function(event) {
618621
self.emit('serverDescriptionChanged', event);
@@ -635,6 +638,7 @@ function reconnectProxies(self, proxies, callback) {
635638
relayEvents(server, self, ['commandStarted', 'commandSucceeded', 'commandFailed']);
636639

637640
// Connect to proxy
641+
self.connectingProxies.push(server);
638642
server.connect(self.s.connectOptions);
639643
}, i);
640644
}

lib/topologies/server.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,6 +1051,7 @@ Server.prototype.destroy = function(options) {
10511051

10521052
// Destroy the pool
10531053
this.s.pool.destroy(options.force);
1054+
this.s.pool = undefined;
10541055
};
10551056

10561057
/**

0 commit comments

Comments
 (0)