diff options
author | Randolph Tan <randolph@10gen.com> | 2015-03-03 16:03:30 -0500 |
---|---|---|
committer | Randolph Tan <randolph@10gen.com> | 2015-03-06 11:18:41 -0500 |
commit | 9af0d09d28ec052740e80706e4b8844a564e93a0 (patch) | |
tree | 39e14d8cb05237f24b6830ee8497b70e7479ea77 | |
parent | b6a66a0c3494687c8b059d5f39de072a22e650a4 (diff) | |
download | mongo-9af0d09d28ec052740e80706e4b8844a564e93a0.tar.gz |
SERVER-17441 mongos crash right after "not master" error
-rw-r--r-- | src/mongo/client/dbclient_rs.cpp | 8 |
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 ){ |