diff options
author | Eliot Horowitz <eliot@10gen.com> | 2011-03-03 12:20:49 -0500 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2011-03-03 12:21:23 -0500 |
commit | bbf18b270c52fe575b224ad5f62336b410f9b623 (patch) | |
tree | c35bceda6c0383b4a0e05cc3975f209026635939 | |
parent | 081b046b720b5bd28d0598b077e9cd5bef5ad25b (diff) | |
download | mongo-bbf18b270c52fe575b224ad5f62336b410f9b623.tar.gz |
fix rs client error on failover SERVER-2619
-rw-r--r-- | client/dbclient_rs.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/client/dbclient_rs.cpp b/client/dbclient_rs.cpp index e20c1bf28cf..fd8ececd975 100644 --- a/client/dbclient_rs.cpp +++ b/client/dbclient_rs.cpp @@ -183,18 +183,16 @@ namespace mongo { HostAndPort ReplicaSetMonitor::getMaster() { - bool good = false; { scoped_lock lk( _lock ); - good = _master >= 0 && _nodes[_master].ok; + if ( _master >= 0 && _nodes[_master].ok ) + return _nodes[_master].addr; } - - if ( ! good ) - _check(); - - uassert( 10009 , str::stream() << "ReplicaSetMonitor no master found for set: " << _name , _master >= 0 ); - + + _check(); + scoped_lock lk( _lock ); + uassert( 10009 , str::stream() << "ReplicaSetMonitor no master found for set: " << _name , _master >= 0 ); return _nodes[_master].addr; } |