summaryrefslogtreecommitdiff
path: root/src/mongo/client/replica_set_monitor.cpp
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2015-10-28 17:50:50 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2015-11-03 16:22:41 -0500
commita4bc56e0ed623c46e954e88c4c4cea1356126217 (patch)
tree83759b745a5839f220b0bd332ac8dbe22b55bf40 /src/mongo/client/replica_set_monitor.cpp
parent1a450c6e98e5d24af6672fae396408ba88ee0e9c (diff)
downloadmongo-a4bc56e0ed623c46e954e88c4c4cea1356126217.tar.gz
SERVER-21186 Make catalog manager insert virtual
Diffstat (limited to 'src/mongo/client/replica_set_monitor.cpp')
-rw-r--r--src/mongo/client/replica_set_monitor.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/mongo/client/replica_set_monitor.cpp b/src/mongo/client/replica_set_monitor.cpp
index bd57fdacea1..aa3151d789f 100644
--- a/src/mongo/client/replica_set_monitor.cpp
+++ b/src/mongo/client/replica_set_monitor.cpp
@@ -74,6 +74,9 @@ typedef SetState::Nodes Nodes;
const double socketTimeoutSecs = 5;
+// Intentionally chosen to compare worse than all known latencies.
+const int64_t unknownLatency = numeric_limits<int64_t>::max();
+
// TODO: Move to ReplicaSetMonitorManager
ReplicaSetMonitor::ConfigChangeHook asyncConfigChangeHook;
ReplicaSetMonitor::ConfigChangeHook syncConfigChangeHook;
@@ -196,6 +199,7 @@ StaticObserver staticObserver;
bool isMaster(const Node& node) {
return node.isMaster;
}
+
bool compareLatencies(const Node* lhs, const Node* rhs) {
// NOTE: this automatically compares Node::unknownLatency worse than all others.
return lhs->latencyMicros < rhs->latencyMicros;
@@ -249,6 +253,7 @@ struct HostNotIn {
}
const std::set<HostAndPort>& _hosts;
};
+
} // namespace
// At 1 check every 10 seconds, 30 checks takes 5 minutes
@@ -795,7 +800,12 @@ void IsMasterReply::parse(const BSONObj& obj) {
}
}
-const int64_t Node::unknownLatency = numeric_limits<int64_t>::max();
+Node::Node(const HostAndPort& host) : host(host), latencyMicros(unknownLatency) {}
+
+void Node::markFailed() {
+ isUp = false;
+ isMaster = false;
+}
bool Node::matches(const ReadPreference pref) const {
if (!isUp)