Skip to content

Commit 097d3b9

Browse files
mbroadstdaprahamian
authored andcommitted
refactor(topologies): pass errors back from selectServer
The legacy topology types sometimes return an error, or a null server to indicate selection failed.
1 parent c3bfc05 commit 097d3b9

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

lib/core/topologies/mongos.js

+5
Original file line numberDiff line numberDiff line change
@@ -1130,6 +1130,11 @@ Mongos.prototype.selectServer = function(selector, options, callback) {
11301130
options = options || {};
11311131

11321132
const server = pickProxy(this, options.session);
1133+
if (server == null) {
1134+
callback(new MongoError('server selection failed'));
1135+
return;
1136+
}
1137+
11331138
if (this.s.debug) this.emit('pickedServer', null, server);
11341139
callback(null, server);
11351140
};

lib/core/topologies/replset.js

+10
Original file line numberDiff line numberDiff line change
@@ -1111,6 +1111,16 @@ ReplSet.prototype.selectServer = function(selector, options, callback) {
11111111
}
11121112

11131113
const server = this.s.replicaSetState.pickServer(readPreference);
1114+
if (server == null) {
1115+
callback(new MongoError('server selection failed'));
1116+
return;
1117+
}
1118+
1119+
if (!(server instanceof Server)) {
1120+
callback(server, null);
1121+
return;
1122+
}
1123+
11141124
if (this.s.debug) this.emit('pickedServer', options.readPreference, server);
11151125
callback(null, server);
11161126
};

0 commit comments

Comments
 (0)