summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2011-03-03 12:20:49 -0500
committerEliot Horowitz <eliot@10gen.com>2011-03-03 12:21:23 -0500
commitbbf18b270c52fe575b224ad5f62336b410f9b623 (patch)
treec35bceda6c0383b4a0e05cc3975f209026635939 /client
parent081b046b720b5bd28d0598b077e9cd5bef5ad25b (diff)
downloadmongo-bbf18b270c52fe575b224ad5f62336b410f9b623.tar.gz
fix rs client error on failover SERVER-2619
Diffstat (limited to 'client')
-rw-r--r--client/dbclient_rs.cpp14
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;
}