summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandolph Tan <randolph@10gen.com>2015-03-03 16:03:30 -0500
committerRandolph Tan <randolph@10gen.com>2015-03-06 11:18:41 -0500
commit9af0d09d28ec052740e80706e4b8844a564e93a0 (patch)
tree39e14d8cb05237f24b6830ee8497b70e7479ea77
parentb6a66a0c3494687c8b059d5f39de072a22e650a4 (diff)
downloadmongo-9af0d09d28ec052740e80706e4b8844a564e93a0.tar.gz
SERVER-17441 mongos crash right after "not master" error
-rw-r--r--src/mongo/client/dbclient_rs.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/mongo/client/dbclient_rs.cpp b/src/mongo/client/dbclient_rs.cpp
index ec20b9fcd0f..a298cdfc0ab 100644
--- a/src/mongo/client/dbclient_rs.cpp
+++ b/src/mongo/client/dbclient_rs.cpp
@@ -342,6 +342,10 @@ namespace {
// If _lastSlaveOkConn is pointing to a connection to primary, make sure that it is
// the same as _master, as this is the connection that has the version set.
if (_lastSlaveOkHost == _masterHost) {
+ if (_master.get() == NULL) {
+ // _master conn has been invalidated, need to reset connections.
+ return false;
+ }
_lastSlaveOkConn = _master;
}
@@ -633,7 +637,9 @@ namespace {
if ( monitor ) {
monitor->failedHost( _masterHost );
}
- _master.reset();
+
+ _masterHost = HostAndPort();
+ _master.reset();
}
auto_ptr<DBClientCursor> DBClientReplicaSet::checkSlaveQueryResult( auto_ptr<DBClientCursor> result ){