summaryrefslogtreecommitdiff
path: root/src/mongo
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo')
-rw-r--r--src/mongo/client/sdam/sdam_datatypes.cpp14
-rw-r--r--src/mongo/client/sdam/sdam_datatypes.h18
-rw-r--r--src/mongo/client/sdam/sdam_json_test_runner.cpp6
-rw-r--r--src/mongo/client/sdam/server_description.cpp55
-rw-r--r--src/mongo/client/sdam/server_description.h28
-rw-r--r--src/mongo/client/sdam/server_description_builder.cpp2
-rw-r--r--src/mongo/client/sdam/server_description_builder.h2
-rw-r--r--src/mongo/client/sdam/server_description_test.cpp100
-rw-r--r--src/mongo/client/sdam/server_selection_json_test_runner.cpp10
-rw-r--r--src/mongo/client/sdam/server_selector.cpp2
-rw-r--r--src/mongo/client/sdam/server_selector.h10
-rw-r--r--src/mongo/client/sdam/server_selector_test.cpp2
-rw-r--r--src/mongo/client/sdam/topology_listener.cpp4
-rw-r--r--src/mongo/client/sdam/topology_listener.h10
-rw-r--r--src/mongo/client/sdam/topology_listener_mock.cpp8
-rw-r--r--src/mongo/client/sdam/topology_listener_mock.h6
-rw-r--r--src/mongo/client/sdam/topology_manager.cpp6
-rw-r--r--src/mongo/client/sdam/topology_manager.h6
-rw-r--r--src/mongo/client/sdam/topology_manager_test.cpp32
-rw-r--r--src/mongo/client/server_ping_monitor.cpp2
-rw-r--r--src/mongo/client/server_ping_monitor.h2
-rw-r--r--src/mongo/client/server_ping_monitor_test.cpp2
-rw-r--r--src/mongo/client/streamable_replica_set_monitor.cpp8
-rw-r--r--src/mongo/client/streamable_replica_set_monitor.h4
-rw-r--r--src/mongo/client/streamable_replica_set_monitor_error_handler.h10
-rw-r--r--src/mongo/client/streamable_replica_set_monitor_error_handler_test.cpp4
26 files changed, 174 insertions, 179 deletions
diff --git a/src/mongo/client/sdam/sdam_datatypes.cpp b/src/mongo/client/sdam/sdam_datatypes.cpp
index 82d03851409..78e86bc3fae 100644
--- a/src/mongo/client/sdam/sdam_datatypes.cpp
+++ b/src/mongo/client/sdam/sdam_datatypes.cpp
@@ -145,26 +145,26 @@ const std::vector<TopologyType> allTopologyTypes() {
return result;
}
-const HostAndPort& IsMasterOutcome::getServer() const {
+const HostAndPort& HelloOutcome::getServer() const {
return _server;
}
-bool IsMasterOutcome::isSuccess() const {
+bool HelloOutcome::isSuccess() const {
return _success;
}
-const boost::optional<BSONObj>& IsMasterOutcome::getResponse() const {
+const boost::optional<BSONObj>& HelloOutcome::getResponse() const {
return _response;
}
-const boost::optional<IsMasterRTT>& IsMasterOutcome::getRtt() const {
+const boost::optional<HelloRTT>& HelloOutcome::getRtt() const {
return _rtt;
}
-const boost::optional<TopologyVersion>& IsMasterOutcome::getTopologyVersion() const {
+const boost::optional<TopologyVersion>& HelloOutcome::getTopologyVersion() const {
return _topologyVersion;
}
-const std::string& IsMasterOutcome::getErrorMsg() const {
+const std::string& HelloOutcome::getErrorMsg() const {
return _errorMsg;
}
-BSONObj IsMasterOutcome::toBSON() const {
+BSONObj HelloOutcome::toBSON() const {
BSONObjBuilder builder;
builder.append("host", _server.toString());
builder.append("success", _success);
diff --git a/src/mongo/client/sdam/sdam_datatypes.h b/src/mongo/client/sdam/sdam_datatypes.h
index 6c5902dfa40..111f149d4f1 100644
--- a/src/mongo/client/sdam/sdam_datatypes.h
+++ b/src/mongo/client/sdam/sdam_datatypes.h
@@ -73,17 +73,15 @@ std::string toString(const ServerType serverType);
StatusWith<ServerType> parseServerType(StringData strServerType);
std::ostream& operator<<(std::ostream& os, const ServerType serverType);
-using IsMasterRTT = mongo::Microseconds;
+using HelloRTT = Microseconds;
-// The result of an attempt to call the "ismaster" command on a server.
-class IsMasterOutcome {
- IsMasterOutcome() = delete;
+// The result of an attempt to call the "hello" command on a server.
+class HelloOutcome {
+ HelloOutcome() = delete;
public:
// Success constructor.
- IsMasterOutcome(HostAndPort server,
- BSONObj response,
- boost::optional<IsMasterRTT> rtt = boost::none)
+ HelloOutcome(HostAndPort server, BSONObj response, boost::optional<HelloRTT> rtt = boost::none)
: _server(std::move(server)), _success(true), _response(response), _rtt(rtt) {
const auto topologyVersionField = response.getField("topologyVersion");
if (topologyVersionField) {
@@ -93,7 +91,7 @@ public:
}
// Failure constructor.
- IsMasterOutcome(HostAndPort server, BSONObj response, std::string errorMsg)
+ HelloOutcome(HostAndPort server, BSONObj response, std::string errorMsg)
: _server(std::move(server)), _success(false), _errorMsg(errorMsg) {
const auto topologyVersionField = response.getField("topologyVersion");
if (topologyVersionField) {
@@ -105,7 +103,7 @@ public:
const HostAndPort& getServer() const;
bool isSuccess() const;
const boost::optional<BSONObj>& getResponse() const;
- const boost::optional<IsMasterRTT>& getRtt() const;
+ const boost::optional<HelloRTT>& getRtt() const;
const boost::optional<TopologyVersion>& getTopologyVersion() const;
const std::string& getErrorMsg() const;
BSONObj toBSON() const;
@@ -120,7 +118,7 @@ private:
boost::optional<BSONObj> _response;
// The round trip time to execute the command (or boost::none if it failed or is not the outcome
// from an initial handshake exchange).
- boost::optional<IsMasterRTT> _rtt;
+ boost::optional<HelloRTT> _rtt;
// Indicates how fresh the topology information in this reponse is (or boost::none if it failed
// or the response did not include this).
boost::optional<TopologyVersion> _topologyVersion;
diff --git a/src/mongo/client/sdam/sdam_json_test_runner.cpp b/src/mongo/client/sdam/sdam_json_test_runner.cpp
index 83d6aaa8348..d82ca02ca94 100644
--- a/src/mongo/client/sdam/sdam_json_test_runner.cpp
+++ b/src/mongo/client/sdam/sdam_json_test_runner.cpp
@@ -85,10 +85,10 @@ public:
const auto bsonIsMaster = pair[1].Obj();
if (bsonIsMaster.nFields() == 0) {
- _isMasterResponses.push_back(IsMasterOutcome(address, BSONObj(), "network error"));
+ _isMasterResponses.push_back(HelloOutcome(address, BSONObj(), "network error"));
} else {
_isMasterResponses.push_back(
- IsMasterOutcome(address, bsonIsMaster, duration_cast<IsMasterRTT>(kLatency)));
+ HelloOutcome(address, bsonIsMaster, duration_cast<HelloRTT>(kLatency)));
}
}
_topologyOutcome = phase["outcome"].Obj();
@@ -418,7 +418,7 @@ private:
MongoURI _testUri;
int _phaseNum;
- std::vector<IsMasterOutcome> _isMasterResponses;
+ std::vector<HelloOutcome> _isMasterResponses;
BSONObj _topologyOutcome;
};
diff --git a/src/mongo/client/sdam/server_description.cpp b/src/mongo/client/sdam/server_description.cpp
index b1e10b4a5fd..211add1c01f 100644
--- a/src/mongo/client/sdam/server_description.cpp
+++ b/src/mongo/client/sdam/server_description.cpp
@@ -52,16 +52,16 @@ std::set<ServerType> kDataServerTypes{
} // namespace
ServerDescription::ServerDescription(ClockSource* clockSource,
- const IsMasterOutcome& isMasterOutcome,
- boost::optional<IsMasterRTT> lastRtt,
+ const HelloOutcome& helloOutcome,
+ boost::optional<HelloRTT> lastRtt,
boost::optional<TopologyVersion> topologyVersion)
- : ServerDescription(isMasterOutcome.getServer()) {
- if (isMasterOutcome.isSuccess()) {
- const auto response = *isMasterOutcome.getResponse();
+ : ServerDescription(helloOutcome.getServer()) {
+ if (helloOutcome.isSuccess()) {
+ const auto response = *helloOutcome.getResponse();
// type must be parsed before RTT is calculated.
- parseTypeFromIsMaster(response);
- calculateRtt(isMasterOutcome.getRtt(), lastRtt);
+ parseTypeFromHelloReply(response);
+ calculateRtt(helloOutcome.getRtt(), lastRtt);
_lastUpdateTime = clockSource->now();
_minWireVersion = response["minWireVersion"].numberInt();
@@ -93,7 +93,7 @@ ServerDescription::ServerDescription(ClockSource* clockSource,
_primary = HostAndPort(response.getStringField("primary"));
}
} else {
- _error = isMasterOutcome.getErrorMsg();
+ _error = helloOutcome.getErrorMsg();
_topologyVersion = topologyVersion;
}
}
@@ -147,8 +147,8 @@ void ServerDescription::saveElectionId(BSONElement electionId) {
}
}
-void ServerDescription::calculateRtt(const boost::optional<IsMasterRTT> currentRtt,
- const boost::optional<IsMasterRTT> lastRtt) {
+void ServerDescription::calculateRtt(const boost::optional<HelloRTT> currentRtt,
+ const boost::optional<HelloRTT> lastRtt) {
if (getType() == ServerType::kUnknown) {
// if a server's type is Unknown, it's RTT is null
// see:
@@ -165,13 +165,13 @@ void ServerDescription::calculateRtt(const boost::optional<IsMasterRTT> currentR
// updated the RTT yet. Set the _rtt to max() until the ServerPingMonitor provides the
// accurate RTT measurement.
if (lastRtt == boost::none) {
- _rtt = IsMasterRTT::max();
+ _rtt = HelloRTT::max();
return;
}
// Do not update the RTT upon an onServerHeartbeatSucceededEvent.
_rtt = lastRtt;
- } else if (lastRtt == boost::none || lastRtt == IsMasterRTT::max()) {
+ } else if (lastRtt == boost::none || lastRtt == HelloRTT::max()) {
// The lastRtt either does not exist or is not accurate. Discard it and use the currentRtt.
_rtt = currentRtt;
} else {
@@ -196,33 +196,34 @@ void ServerDescription::saveLastWriteInfo(BSONObj lastWriteBson) {
}
}
-void ServerDescription::parseTypeFromIsMaster(const BSONObj isMaster) {
+void ServerDescription::parseTypeFromHelloReply(const BSONObj helloReply) {
ServerType t;
- bool hasSetName = isMaster.hasField("setName");
+ bool hasSetName = helloReply.hasField("setName");
- if (isMaster.getField("ok").numberInt() != 1) {
+ if (helloReply.getField("ok").numberInt() != 1) {
t = ServerType::kUnknown;
- } else if (!hasSetName && !isMaster.hasField("msg") && !isMaster.getBoolField("isreplicaset")) {
+ } else if (!hasSetName && !helloReply.hasField("msg") &&
+ !helloReply.getBoolField("isreplicaset")) {
t = ServerType::kStandalone;
- } else if (kIsDbGrid == isMaster.getStringField("msg")) {
+ } else if (kIsDbGrid == helloReply.getStringField("msg")) {
t = ServerType::kMongos;
- } else if (hasSetName && isMaster.getBoolField("hidden")) {
+ } else if (hasSetName && helloReply.getBoolField("hidden")) {
t = ServerType::kRSOther;
- } else if (hasSetName && isMaster.getBoolField("ismaster")) {
+ } else if (hasSetName && helloReply.getBoolField("ismaster")) {
t = ServerType::kRSPrimary;
- } else if (hasSetName && isMaster.getBoolField("secondary")) {
+ } else if (hasSetName && helloReply.getBoolField("secondary")) {
t = ServerType::kRSSecondary;
- } else if (hasSetName && isMaster.getBoolField("arbiterOnly")) {
+ } else if (hasSetName && helloReply.getBoolField("arbiterOnly")) {
t = ServerType::kRSArbiter;
} else if (hasSetName) {
t = ServerType::kRSOther;
- } else if (isMaster.getBoolField("isreplicaset")) {
+ } else if (helloReply.getBoolField("isreplicaset")) {
t = ServerType::kRSGhost;
} else {
LOGV2_ERROR(23931,
- "Unknown server type from successful isMaster reply: {isMaster}",
- "Unknown server type from successful isMaster reply",
- "isMaster"_attr = isMaster.toString());
+ "Unknown server type from successful hello reply: {helloReply}",
+ "Unknown server type from successful hello reply",
+ "helloReply"_attr = helloReply.toString());
t = ServerType::kUnknown;
}
_type = t;
@@ -236,7 +237,7 @@ const boost::optional<std::string>& ServerDescription::getError() const {
return _error;
}
-const boost::optional<IsMasterRTT>& ServerDescription::getRtt() const {
+const boost::optional<HelloRTT>& ServerDescription::getRtt() const {
return _rtt;
}
@@ -432,7 +433,7 @@ std::string ServerDescription::toString() const {
return toBson().toString();
}
-ServerDescriptionPtr ServerDescription::cloneWithRTT(IsMasterRTT rtt) {
+ServerDescriptionPtr ServerDescription::cloneWithRTT(HelloRTT rtt) {
auto newServerDescription = std::make_shared<ServerDescription>(*this);
auto lastRtt = newServerDescription->getRtt();
newServerDescription->calculateRtt(rtt, lastRtt);
diff --git a/src/mongo/client/sdam/server_description.h b/src/mongo/client/sdam/server_description.h
index 9d5bdc30971..e9674cc1332 100644
--- a/src/mongo/client/sdam/server_description.h
+++ b/src/mongo/client/sdam/server_description.h
@@ -55,11 +55,11 @@ public:
/**
* Build a new ServerDescription according to the rules of the SDAM spec based on the
- * last RTT to the server and isMaster response.
+ * last RTT to the server and hello response.
*/
ServerDescription(ClockSource* clockSource,
- const IsMasterOutcome& isMasterOutcome,
- boost::optional<IsMasterRTT> lastRtt = boost::none,
+ const HelloOutcome& helloOutcome,
+ boost::optional<HelloRTT> lastRtt = boost::none,
boost::optional<TopologyVersion> topologyVersion = boost::none);
/**
@@ -84,7 +84,7 @@ public:
// network attributes
const boost::optional<std::string>& getError() const;
- const boost::optional<IsMasterRTT>& getRtt() const;
+ const boost::optional<HelloRTT>& getRtt() const;
const boost::optional<int>& getLogicalSessionTimeoutMinutes() const;
// server capabilities
@@ -109,18 +109,18 @@ public:
BSONObj toBson() const;
std::string toString() const;
- ServerDescriptionPtr cloneWithRTT(IsMasterRTT rtt);
+ ServerDescriptionPtr cloneWithRTT(HelloRTT rtt);
private:
/**
- * Classify the server's type based on the ismaster response.
- * @param isMaster - reply information for the ismaster command
+ * Classify the server's type based on the hello response.
+ * @param helloReply - reply information for the hello command
*/
- void parseTypeFromIsMaster(const BSONObj isMaster);
+ void parseTypeFromHelloReply(BSONObj helloReply);
- void calculateRtt(const boost::optional<IsMasterRTT> currentRtt,
- const boost::optional<IsMasterRTT> lastRtt);
+ void calculateRtt(const boost::optional<HelloRTT> currentRtt,
+ const boost::optional<HelloRTT> lastRtt);
void saveLastWriteInfo(BSONObj lastWriteBson);
void storeHostListIfPresent(const std::string key,
@@ -135,7 +135,7 @@ private:
static inline const double kRttAlpha = 0.2;
// address: the hostname or IP, and the port number, that the client connects to. Note that this
- // is not the server's ismaster.me field, in the case that the server reports an address
+ // is not the server's hello.me field, in the case that the server reports an address
// different from the address the client uses.
HostAndPort _address;
@@ -145,11 +145,11 @@ private:
// error: information about the last error related to this server. Default null.
boost::optional<std::string> _error;
- // roundTripTime: the duration of the ismaster call. Default null.
- boost::optional<IsMasterRTT> _rtt;
+ // roundTripTime: the duration of the hello call. Default null.
+ boost::optional<HelloRTT> _rtt;
// lastWriteDate: a 64-bit BSON datetime or null. The "lastWriteDate" from the server's most
- // recent ismaster response.
+ // recent hello response.
boost::optional<Date_t> _lastWriteDate;
// opTime: an ObjectId or null. The last opTime reported by the server; an ObjectId or null.
diff --git a/src/mongo/client/sdam/server_description_builder.cpp b/src/mongo/client/sdam/server_description_builder.cpp
index 3182b3a9658..cfd65eed60c 100644
--- a/src/mongo/client/sdam/server_description_builder.cpp
+++ b/src/mongo/client/sdam/server_description_builder.cpp
@@ -43,7 +43,7 @@ ServerDescriptionBuilder& ServerDescriptionBuilder::withError(const std::string&
return *this;
}
-ServerDescriptionBuilder& ServerDescriptionBuilder::withRtt(const IsMasterRTT& rtt) {
+ServerDescriptionBuilder& ServerDescriptionBuilder::withRtt(const HelloRTT& rtt) {
_instance->_rtt = rtt;
return *this;
}
diff --git a/src/mongo/client/sdam/server_description_builder.h b/src/mongo/client/sdam/server_description_builder.h
index 9cc652c2059..b0e886d4e90 100644
--- a/src/mongo/client/sdam/server_description_builder.h
+++ b/src/mongo/client/sdam/server_description_builder.h
@@ -52,7 +52,7 @@ public:
ServerDescriptionBuilder& withSetName(const std::string setName);
// network attributes
- ServerDescriptionBuilder& withRtt(const IsMasterRTT& rtt);
+ ServerDescriptionBuilder& withRtt(const HelloRTT& rtt);
ServerDescriptionBuilder& withError(const std::string& error);
ServerDescriptionBuilder& withLogicalSessionTimeoutMinutes(
const boost::optional<int> logicalSessionTimeoutMinutes);
diff --git a/src/mongo/client/sdam/server_description_test.cpp b/src/mongo/client/sdam/server_description_test.cpp
index 3c335201281..c6dc8053e11 100644
--- a/src/mongo/client/sdam/server_description_test.cpp
+++ b/src/mongo/client/sdam/server_description_test.cpp
@@ -290,81 +290,81 @@ protected:
};
TEST_F(ServerDescriptionTestFixture, ShouldParseTypeAsUnknownForIsMasterError) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kTopologyVersion, "an error occurred");
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kTopologyVersion, "an error occurred");
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(ServerType::kUnknown, description.getType());
}
TEST_F(ServerDescriptionTestFixture, ShouldParseTypeAsUnknownIfOkMissing) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kBsonMissingOk, IsMasterRTT::min());
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kBsonMissingOk, HelloRTT::min());
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(ServerType::kUnknown, description.getType());
}
TEST_F(ServerDescriptionTestFixture, ShouldParseTypeAsStandalone) {
// No "msg: isdbgrid", no setName, and no "isreplicaset: true".
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kBsonOk, IsMasterRTT::min());
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kBsonOk, HelloRTT::min());
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(ServerType::kStandalone, description.getType());
}
TEST_F(ServerDescriptionTestFixture, ShouldParseTypeAsMongos) {
// contains "msg: isdbgrid"
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kBsonMongos, IsMasterRTT::min());
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kBsonMongos, HelloRTT::min());
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(ServerType::kMongos, description.getType());
}
TEST_F(ServerDescriptionTestFixture, ShouldParseTypeAsRSPrimary) {
// "ismaster: true", "setName" in response
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kBsonRsPrimary, IsMasterRTT::min());
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kBsonRsPrimary, HelloRTT::min());
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(ServerType::kRSPrimary, description.getType());
}
TEST_F(ServerDescriptionTestFixture, ShouldParseTypeAsRSSecondary) {
// "secondary: true", "setName" in response
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kBsonRsSecondary, IsMasterRTT::min());
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kBsonRsSecondary, HelloRTT::min());
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(ServerType::kRSSecondary, description.getType());
}
TEST_F(ServerDescriptionTestFixture, ShouldParseTypeAsArbiter) {
// "arbiterOnly: true", "setName" in response.
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kBsonRsArbiter, IsMasterRTT::min());
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kBsonRsArbiter, HelloRTT::min());
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(ServerType::kRSArbiter, description.getType());
}
TEST_F(ServerDescriptionTestFixture, ShouldParseTypeAsOther) {
// "hidden: true", "setName" in response, or not primary, secondary, nor arbiter
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kBsonRsOther, IsMasterRTT::min());
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kBsonRsOther, HelloRTT::min());
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(ServerType::kRSOther, description.getType());
}
TEST_F(ServerDescriptionTestFixture, ShouldParseTypeAsGhost) {
// "isreplicaset: true" in response.
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kBsonRsGhost, IsMasterRTT::min());
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kBsonRsGhost, HelloRTT::min());
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(ServerType::kRSGhost, description.getType());
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreErrorDescription) {
auto errorMsg = "an error occurred";
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kTopologyVersion, errorMsg);
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kTopologyVersion, errorMsg);
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(errorMsg, *description.getError());
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreRTTWithNoPreviousLatency) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kBsonRsPrimary, IsMasterRTT::max());
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kBsonRsPrimary, HelloRTT::max());
auto description = ServerDescription(clockSource, response);
- ASSERT_EQUALS(IsMasterRTT::max(), *description.getRtt());
+ ASSERT_EQUALS(HelloRTT::max(), *description.getRtt());
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreRTTNullWhenServerTypeIsUnknown) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kBsonMissingOk, IsMasterRTT::max());
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kBsonMissingOk, HelloRTT::max());
auto description = ServerDescription(clockSource, response, boost::none);
ASSERT_EQUALS(boost::none, description.getRtt());
}
@@ -372,17 +372,17 @@ TEST_F(ServerDescriptionTestFixture, ShouldStoreRTTNullWhenServerTypeIsUnknown)
TEST_F(ServerDescriptionTestFixture,
ShouldStoreConstantRTTWhenChangingFromOneKnownServerTypeToAnother) {
// Simulate a non-ping monitoring response.
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kBsonRsPrimary);
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kBsonRsPrimary);
auto lastServerDescription = ServerDescriptionBuilder()
.withType(ServerType::kRSSecondary)
.withRtt(mongo::Milliseconds(20))
.instance();
- // Check the RTT is unchanged since the IsMasterOutcome does not contain an RTT.
+ // Check the RTT is unchanged since the HelloOutcome does not contain an RTT.
auto description = ServerDescription(clockSource, response, lastServerDescription->getRtt());
ASSERT_EQUALS(20, durationCount<mongo::Milliseconds>(*description.getRtt()));
- auto response2 = IsMasterOutcome(HostAndPort("foo:1234"), kBsonRsPrimary);
+ auto response2 = HelloOutcome(HostAndPort("foo:1234"), kBsonRsPrimary);
auto description2 = ServerDescription(clockSource, response2, description.getRtt());
ASSERT_EQUALS(20, durationCount<mongo::Milliseconds>(*description2.getRtt()));
}
@@ -399,8 +399,8 @@ TEST_F(ServerDescriptionTestFixture, ShouldPreserveRTTPrecisionForMicroseconds)
for (int i = 0; i < numIterations; ++i) {
auto lastRtt = *lastServerDescription->getRtt();
- auto response = IsMasterOutcome(
- HostAndPort("foo:1234"), kBsonRsPrimary, randMicroseconds(minRttMicros));
+ auto response =
+ HelloOutcome(HostAndPort("foo:1234"), kBsonRsPrimary, randMicroseconds(minRttMicros));
lastServerDescription = std::make_shared<ServerDescription>(clockSource, response, lastRtt);
}
@@ -410,26 +410,23 @@ TEST_F(ServerDescriptionTestFixture, ShouldPreserveRTTPrecisionForMicroseconds)
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreLastWriteDate) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"),
- kBsonLastWrite,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto response = HelloOutcome(
+ HostAndPort("foo:1234"), kBsonLastWrite, duration_cast<HelloRTT>(mongo::Milliseconds(40)));
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(kLastWriteDate, description.getLastWriteDate());
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreOpTime) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"),
- kBsonLastWrite,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto response = HelloOutcome(
+ HostAndPort("foo:1234"), kBsonLastWrite, duration_cast<HelloRTT>(mongo::Milliseconds(40)));
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(kOpTime, description.getOpTime());
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreLastUpdateTime) {
auto testStart = clockSource->now();
- auto response = IsMasterOutcome(HostAndPort("foo:1234"),
- kBsonRsPrimary,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto response = HelloOutcome(
+ HostAndPort("foo:1234"), kBsonRsPrimary, duration_cast<HelloRTT>(mongo::Milliseconds(40)));
auto description = ServerDescription(clockSource, response);
ASSERT_GREATER_THAN_OR_EQUALS(description.getLastUpdateTime(), testStart);
}
@@ -437,8 +434,8 @@ TEST_F(ServerDescriptionTestFixture, ShouldStoreLastUpdateTime) {
// Disabling these tests since this causes jstest failures when
// running on a host with a mixed case hostname.
// TEST_F(ServerDescriptionTestFixture, ShouldStoreHostNamesAsLowercase) {
-// auto response = IsMasterOutcome(HostAndPort("FOO:1234"), kBsonHostNames,
-// duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+// auto response = HelloOutcome(HostAndPort("FOO:1234"), kBsonHostNames,
+// duration_cast<HelloRTT>(mongo::Milliseconds(40)));
// auto description = ServerDescription(clockSource, response);
//
// ASSERT_EQUALS("foo:1234", description.getAddress());
@@ -457,25 +454,25 @@ TEST_F(ServerDescriptionTestFixture, ShouldStoreLastUpdateTime) {
//}
TEST_F(ServerDescriptionTestFixture, ShouldStoreMinMaxWireVersion) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"),
- kBsonWireVersion,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto response = HelloOutcome(HostAndPort("foo:1234"),
+ kBsonWireVersion,
+ duration_cast<HelloRTT>(mongo::Milliseconds(40)));
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(kBsonWireVersion["minWireVersion"].Int(), description.getMinWireVersion());
ASSERT_EQUALS(kBsonWireVersion["maxWireVersion"].Int(), description.getMaxWireVersion());
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreTags) {
- auto response = IsMasterOutcome(
- HostAndPort("foo:1234"), kBsonTags, duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto response = HelloOutcome(
+ HostAndPort("foo:1234"), kBsonTags, duration_cast<HelloRTT>(mongo::Milliseconds(40)));
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(toStringMap(kBsonTags["tags"].Obj()), description.getTags());
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreSetVersionAndName) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"),
- kBsonSetVersionName,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto response = HelloOutcome(HostAndPort("foo:1234"),
+ kBsonSetVersionName,
+ duration_cast<HelloRTT>(mongo::Milliseconds(40)));
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(kBsonSetVersionName.getIntField("setVersion"), description.getSetVersion());
ASSERT_EQUALS(std::string(kBsonSetVersionName.getStringField("setName")),
@@ -483,34 +480,33 @@ TEST_F(ServerDescriptionTestFixture, ShouldStoreSetVersionAndName) {
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreElectionId) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"),
- kBsonElectionId,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto response = HelloOutcome(
+ HostAndPort("foo:1234"), kBsonElectionId, duration_cast<HelloRTT>(mongo::Milliseconds(40)));
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(kBsonElectionId.getField("electionId").OID(), description.getElectionId());
}
TEST_F(ServerDescriptionTestFixture, ShouldStorePrimary) {
- auto response = IsMasterOutcome(
- HostAndPort("foo:1234"), kBsonPrimary, duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto response = HelloOutcome(
+ HostAndPort("foo:1234"), kBsonPrimary, duration_cast<HelloRTT>(mongo::Milliseconds(40)));
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(std::string(kBsonPrimary.getStringField("primary")),
description.getPrimary()->toString());
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreLogicalSessionTimeout) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"),
- kBsonLogicalSessionTimeout,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto response = HelloOutcome(HostAndPort("foo:1234"),
+ kBsonLogicalSessionTimeout,
+ duration_cast<HelloRTT>(mongo::Milliseconds(40)));
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(kBsonLogicalSessionTimeout.getIntField("logicalSessionTimeoutMinutes"),
description.getLogicalSessionTimeoutMinutes());
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreTopologyVersion) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"),
- kTopologyVersion,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto response = HelloOutcome(HostAndPort("foo:1234"),
+ kTopologyVersion,
+ duration_cast<HelloRTT>(mongo::Milliseconds(40)));
auto topologyVersion =
TopologyVersion::parse(IDLParserErrorContext("TopologyVersion"),
kTopologyVersion.getObjectField("topologyVersion"));
@@ -522,14 +518,14 @@ TEST_F(ServerDescriptionTestFixture, ShouldStoreTopologyVersion) {
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreServerAddressOnError) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kTopologyVersion, "an error occurred");
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kTopologyVersion, "an error occurred");
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(std::string("foo:1234"), description.getAddress().toString());
}
TEST_F(ServerDescriptionTestFixture, ShouldStoreCorrectDefaultValuesOnSuccess) {
- auto response = IsMasterOutcome(
- HostAndPort("foo:1234"), kBsonOk, duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto response = HelloOutcome(
+ HostAndPort("foo:1234"), kBsonOk, duration_cast<HelloRTT>(mongo::Milliseconds(40)));
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(boost::none, description.getError());
ASSERT_EQUALS(boost::none, description.getLastWriteDate());
@@ -549,7 +545,7 @@ TEST_F(ServerDescriptionTestFixture, ShouldStoreCorrectDefaultValuesOnSuccess) {
TEST_F(ServerDescriptionTestFixture, ShouldStoreCorrectDefaultValuesOnFailure) {
- auto response = IsMasterOutcome(HostAndPort("foo:1234"), kTopologyVersion, "an error occurred");
+ auto response = HelloOutcome(HostAndPort("foo:1234"), kTopologyVersion, "an error occurred");
auto description = ServerDescription(clockSource, response);
ASSERT_EQUALS(boost::none, description.getLastWriteDate());
ASSERT_EQUALS(ServerType::kUnknown, description.getType());
diff --git a/src/mongo/client/sdam/server_selection_json_test_runner.cpp b/src/mongo/client/sdam/server_selection_json_test_runner.cpp
index 9fa60ea76a1..cc1e50d28b1 100644
--- a/src/mongo/client/sdam/server_selection_json_test_runner.cpp
+++ b/src/mongo/client/sdam/server_selection_json_test_runner.cpp
@@ -127,11 +127,11 @@ public:
auto clockSource = std::make_unique<ClockSourceMock>();
updatedServerDescription = std::make_shared<ServerDescription>(
ServerDescription(clockSource.get(),
- IsMasterOutcome(HostAndPort("dummy"),
- BSON("ok" << 1 << "setname"
- << "replSet"
- << "ismaster" << true),
- IsMasterRTT(Milliseconds(_newRtt)))));
+ HelloOutcome(HostAndPort("dummy"),
+ BSON("ok" << 1 << "setname"
+ << "replSet"
+ << "ismaster" << true),
+ HelloRTT(Milliseconds(_newRtt)))));
}
TestCaseResult result{{}, _testFilePath};
diff --git a/src/mongo/client/sdam/server_selector.cpp b/src/mongo/client/sdam/server_selector.cpp
index 9a3d596349b..9010371492d 100644
--- a/src/mongo/client/sdam/server_selector.cpp
+++ b/src/mongo/client/sdam/server_selector.cpp
@@ -309,7 +309,7 @@ void LatencyWindow::filterServers(std::vector<ServerDescriptionPtr>* servers) {
servers->end());
}
-bool LatencyWindow::isWithinWindow(IsMasterRTT latency) {
+bool LatencyWindow::isWithinWindow(HelloRTT latency) {
return lower <= latency && latency <= upper;
}
} // namespace mongo::sdam
diff --git a/src/mongo/client/sdam/server_selector.h b/src/mongo/client/sdam/server_selector.h
index 8ce09ce43f8..7a2bd175b2d 100644
--- a/src/mongo/client/sdam/server_selector.h
+++ b/src/mongo/client/sdam/server_selector.h
@@ -188,15 +188,15 @@ private:
// This is used to filter out servers based on their current latency measurements.
struct LatencyWindow {
- const IsMasterRTT lower;
- IsMasterRTT upper;
+ const HelloRTT lower;
+ HelloRTT upper;
- explicit LatencyWindow(const IsMasterRTT lowerBound, const IsMasterRTT windowWidth)
+ explicit LatencyWindow(const HelloRTT lowerBound, const HelloRTT windowWidth)
: lower(lowerBound) {
- upper = (lowerBound == IsMasterRTT::max()) ? lowerBound : lowerBound + windowWidth;
+ upper = (lowerBound == HelloRTT::max()) ? lowerBound : lowerBound + windowWidth;
}
- bool isWithinWindow(IsMasterRTT latency);
+ bool isWithinWindow(HelloRTT latency);
// remove servers not in the latency window in-place.
void filterServers(std::vector<ServerDescriptionPtr>* servers);
diff --git a/src/mongo/client/sdam/server_selector_test.cpp b/src/mongo/client/sdam/server_selector_test.cpp
index 80a06a92513..5e8ed5f2837 100644
--- a/src/mongo/client/sdam/server_selector_test.cpp
+++ b/src/mongo/client/sdam/server_selector_test.cpp
@@ -91,7 +91,7 @@ public:
static inline const auto secondarySet = TagSet(BSON_ARRAY(secondary));
};
- static ServerDescriptionPtr make_with_latency(IsMasterRTT latency,
+ static ServerDescriptionPtr make_with_latency(HelloRTT latency,
HostAndPort address,
ServerType serverType = ServerType::kRSPrimary,
std::map<std::string, std::string> tags = {}) {
diff --git a/src/mongo/client/sdam/topology_listener.cpp b/src/mongo/client/sdam/topology_listener.cpp
index 394327cc70d..788a753ff74 100644
--- a/src/mongo/client/sdam/topology_listener.cpp
+++ b/src/mongo/client/sdam/topology_listener.cpp
@@ -84,7 +84,7 @@ void TopologyEventsPublisher::onTopologyDescriptionChangedEvent(
_scheduleNextDelivery();
}
-void TopologyEventsPublisher::onServerHandshakeCompleteEvent(IsMasterRTT duration,
+void TopologyEventsPublisher::onServerHandshakeCompleteEvent(HelloRTT duration,
const HostAndPort& address,
const BSONObj reply) {
{
@@ -161,7 +161,7 @@ void TopologyEventsPublisher::onServerPingFailedEvent(const HostAndPort& hostAnd
_scheduleNextDelivery();
}
-void TopologyEventsPublisher::onServerPingSucceededEvent(IsMasterRTT duration,
+void TopologyEventsPublisher::onServerPingSucceededEvent(HelloRTT duration,
const HostAndPort& hostAndPort) {
{
stdx::lock_guard lock(_eventQueueMutex);
diff --git a/src/mongo/client/sdam/topology_listener.h b/src/mongo/client/sdam/topology_listener.h
index cc99f5cd700..cd21ac3ef89 100644
--- a/src/mongo/client/sdam/topology_listener.h
+++ b/src/mongo/client/sdam/topology_listener.h
@@ -57,7 +57,7 @@ public:
* Called when a ServerHandshakeCompleteEvent is published - The initial handshake to the server
* at hostAndPort was successful. duration is the measured RTT (Round Trip Time).
*/
- virtual void onServerHandshakeCompleteEvent(IsMasterRTT duration,
+ virtual void onServerHandshakeCompleteEvent(HelloRTT duration,
const HostAndPort& address,
const BSONObj reply = BSONObj()){};
@@ -83,7 +83,7 @@ public:
* Called when a ServerPingSucceededEvent is published - A monitoring ping to the server at
* hostAndPort was successful. duration is the measured RTT (Round Trip Time).
*/
- virtual void onServerPingSucceededEvent(IsMasterRTT duration, const HostAndPort& hostAndPort){};
+ virtual void onServerPingSucceededEvent(HelloRTT duration, const HostAndPort& hostAndPort){};
};
/**
@@ -103,7 +103,7 @@ public:
void onTopologyDescriptionChangedEvent(TopologyDescriptionPtr previousDescription,
TopologyDescriptionPtr newDescription) override;
- virtual void onServerHandshakeCompleteEvent(IsMasterRTT duration,
+ virtual void onServerHandshakeCompleteEvent(HelloRTT duration,
const HostAndPort& address,
const BSONObj reply = BSONObj()) override;
@@ -117,7 +117,7 @@ public:
const HostAndPort& hostAndPort,
const BSONObj reply) override;
void onServerPingFailedEvent(const HostAndPort& hostAndPort, const Status& status) override;
- void onServerPingSucceededEvent(IsMasterRTT duration, const HostAndPort& hostAndPort) override;
+ void onServerPingSucceededEvent(HelloRTT duration, const HostAndPort& hostAndPort) override;
private:
enum class EventType {
@@ -133,7 +133,7 @@ private:
struct Event {
EventType type;
HostAndPort hostAndPort;
- IsMasterRTT duration;
+ HelloRTT duration;
BSONObj reply;
TopologyDescriptionPtr previousDescription;
TopologyDescriptionPtr newDescription;
diff --git a/src/mongo/client/sdam/topology_listener_mock.cpp b/src/mongo/client/sdam/topology_listener_mock.cpp
index 571760d06df..fb306d9158d 100644
--- a/src/mongo/client/sdam/topology_listener_mock.cpp
+++ b/src/mongo/client/sdam/topology_listener_mock.cpp
@@ -75,14 +75,14 @@ std::vector<Status> TopologyListenerMock::getIsMasterResponse(const HostAndPort&
return statusWithIsMasterResponse;
}
-void TopologyListenerMock::onServerPingSucceededEvent(IsMasterRTT latency,
+void TopologyListenerMock::onServerPingSucceededEvent(HelloRTT latency,
const HostAndPort& hostAndPort) {
stdx::lock_guard lk(_mutex);
auto it = _serverPingRTTs.find(hostAndPort);
if (it != _serverPingRTTs.end()) {
it->second.emplace_back(latency);
} else {
- _serverPingRTTs.emplace(hostAndPort, std::vector<StatusWith<IsMasterRTT>>{latency});
+ _serverPingRTTs.emplace(hostAndPort, std::vector<StatusWith<HelloRTT>>{latency});
}
}
@@ -95,7 +95,7 @@ void TopologyListenerMock::onServerPingFailedEvent(const HostAndPort& hostAndPor
if (it != _serverPingRTTs.end()) {
it->second.emplace_back(errorStatus);
} else {
- _serverPingRTTs.emplace(hostAndPort, std::vector<StatusWith<IsMasterRTT>>{errorStatus});
+ _serverPingRTTs.emplace(hostAndPort, std::vector<StatusWith<HelloRTT>>{errorStatus});
}
}
@@ -108,7 +108,7 @@ bool TopologyListenerMock::_hasPingResponse(WithLock, const HostAndPort& hostAnd
return _serverPingRTTs.find(hostAndPort) != _serverPingRTTs.end();
}
-std::vector<StatusWith<IsMasterRTT>> TopologyListenerMock::getPingResponse(
+std::vector<StatusWith<HelloRTT>> TopologyListenerMock::getPingResponse(
const HostAndPort& hostAndPort) {
stdx::lock_guard lock(_mutex);
invariant(_hasPingResponse(lock, hostAndPort));
diff --git a/src/mongo/client/sdam/topology_listener_mock.h b/src/mongo/client/sdam/topology_listener_mock.h
index 0c5007c2457..051d56ee589 100644
--- a/src/mongo/client/sdam/topology_listener_mock.h
+++ b/src/mongo/client/sdam/topology_listener_mock.h
@@ -58,7 +58,7 @@ public:
*/
std::vector<Status> getIsMasterResponse(const HostAndPort& hostAndPort);
- void onServerPingSucceededEvent(IsMasterRTT latency, const HostAndPort& hostAndPort) override;
+ void onServerPingSucceededEvent(HelloRTT latency, const HostAndPort& hostAndPort) override;
void onServerPingFailedEvent(const HostAndPort& hostAndPort, const Status& status) override;
@@ -71,12 +71,12 @@ public:
/**
* Returns the responses for the most recent onServerPing events.
*/
- std::vector<StatusWith<IsMasterRTT>> getPingResponse(const HostAndPort& hostAndPort);
+ std::vector<StatusWith<HelloRTT>> getPingResponse(const HostAndPort& hostAndPort);
private:
Mutex _mutex;
stdx::unordered_map<HostAndPort, std::vector<Status>> _serverIsMasterReplies;
- stdx::unordered_map<HostAndPort, std::vector<StatusWith<IsMasterRTT>>> _serverPingRTTs;
+ stdx::unordered_map<HostAndPort, std::vector<StatusWith<HelloRTT>>> _serverPingRTTs;
};
} // namespace mongo::sdam
diff --git a/src/mongo/client/sdam/topology_manager.cpp b/src/mongo/client/sdam/topology_manager.cpp
index 2c5125b1a14..15d8ff65382 100644
--- a/src/mongo/client/sdam/topology_manager.cpp
+++ b/src/mongo/client/sdam/topology_manager.cpp
@@ -71,10 +71,10 @@ TopologyManager::TopologyManager(SdamConfiguration config,
_topologyStateMachine(std::make_unique<TopologyStateMachine>(_config)),
_topologyEventsPublisher(eventsPublisher) {}
-bool TopologyManager::onServerDescription(const IsMasterOutcome& isMasterOutcome) {
+bool TopologyManager::onServerDescription(const HelloOutcome& isMasterOutcome) {
stdx::lock_guard<mongo::Mutex> lock(_mutex);
- boost::optional<IsMasterRTT> lastRTT;
+ boost::optional<HelloRTT> lastRTT;
boost::optional<TopologyVersion> lastTopologyVersion;
const auto& lastServerDescription =
@@ -122,7 +122,7 @@ const std::shared_ptr<TopologyDescription> TopologyManager::getTopologyDescripti
return _topologyDescription;
}
-void TopologyManager::onServerRTTUpdated(HostAndPort hostAndPort, IsMasterRTT rtt) {
+void TopologyManager::onServerRTTUpdated(HostAndPort hostAndPort, HelloRTT rtt) {
{
stdx::lock_guard<mongo::Mutex> lock(_mutex);
diff --git a/src/mongo/client/sdam/topology_manager.h b/src/mongo/client/sdam/topology_manager.h
index be64b4849f1..ef572eb523b 100644
--- a/src/mongo/client/sdam/topology_manager.h
+++ b/src/mongo/client/sdam/topology_manager.h
@@ -53,14 +53,14 @@ public:
* This function atomically:
* 1. Clones the current TopologyDescription
* 2. Executes the state machine logic given the cloned TopologyDescription and provided
- * IsMasterOutcome (containing the new ServerDescription).
+ * HelloOutcome (containing the new ServerDescription).
* 3. Installs the cloned (and possibly modified) TopologyDescription as the current one.
*
* Multiple threads may call this function concurrently. However, the manager will process the
* IsMasterOutcomes serially, as required by:
* https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#process-one-ismaster-outcome-at-a-time
*/
- bool onServerDescription(const IsMasterOutcome& isMasterOutcome);
+ bool onServerDescription(const HelloOutcome& isMasterOutcome);
/**
@@ -72,7 +72,7 @@ public:
* 3. Installs the cloned ServerDescription into the TopologyDescription from step 1
* 4. Installs the cloned TopologyDescription as the current one.
*/
- void onServerRTTUpdated(HostAndPort hostAndPort, IsMasterRTT rtt);
+ void onServerRTTUpdated(HostAndPort hostAndPort, HelloRTT rtt);
/**
* Get the current TopologyDescription. This is safe to call from multiple threads.
diff --git a/src/mongo/client/sdam/topology_manager_test.cpp b/src/mongo/client/sdam/topology_manager_test.cpp
index 1cecf8ddea4..ba1eadaa89f 100644
--- a/src/mongo/client/sdam/topology_manager_test.cpp
+++ b/src/mongo/client/sdam/topology_manager_test.cpp
@@ -84,9 +84,9 @@ TEST_F(TopologyManagerTestFixture, ShouldUpdateTopologyVersionOnSuccess) {
ASSERT(serverDescription->getTopologyVersion() == boost::none);
// If previous topologyVersion is boost::none, should update to new topologyVersion
- auto isMasterOutcome = IsMasterOutcome(serverDescription->getAddress(),
- kBsonTopologyVersionLow,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto isMasterOutcome = HelloOutcome(serverDescription->getAddress(),
+ kBsonTopologyVersionLow,
+ duration_cast<HelloRTT>(mongo::Milliseconds(40)));
topologyManager.onServerDescription(isMasterOutcome);
topologyDescription = topologyManager.getTopologyDescription();
auto newServerDescription = topologyDescription->getServers()[0];
@@ -95,9 +95,9 @@ TEST_F(TopologyManagerTestFixture, ShouldUpdateTopologyVersionOnSuccess) {
kBsonTopologyVersionLow.getObjectField("topologyVersion"));
// If previous topologyVersion is <= new topologyVersion, should update to new topologyVersion
- isMasterOutcome = IsMasterOutcome(serverDescription->getAddress(),
- kBsonTopologyVersionHigh,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ isMasterOutcome = HelloOutcome(serverDescription->getAddress(),
+ kBsonTopologyVersionHigh,
+ duration_cast<HelloRTT>(mongo::Milliseconds(40)));
topologyManager.onServerDescription(isMasterOutcome);
topologyDescription = topologyManager.getTopologyDescription();
newServerDescription = topologyDescription->getServers()[0];
@@ -125,7 +125,7 @@ TEST_F(TopologyManagerTestFixture,
auto firstServer = *topologyDescription->getServers()[0];
auto host = firstServer.getAddress();
auto isMasterOutcome =
- IsMasterOutcome(host, kBsonRsPrimary, duration_cast<IsMasterRTT>(mongo::Milliseconds{40}));
+ HelloOutcome(host, kBsonRsPrimary, duration_cast<HelloRTT>(mongo::Milliseconds{40}));
topologyManager.onServerDescription(isMasterOutcome);
checkServerTopologyDescriptionMatches(topologyManager.getTopologyDescription());
@@ -143,9 +143,9 @@ TEST_F(TopologyManagerTestFixture, ShouldUpdateTopologyVersionOnErrorIfSent) {
ASSERT(serverDescription->getTopologyVersion() == boost::none);
// If previous topologyVersion is boost::none, should update to new topologyVersion
- auto isMasterOutcome = IsMasterOutcome(serverDescription->getAddress(),
- kBsonTopologyVersionLow,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto isMasterOutcome = HelloOutcome(serverDescription->getAddress(),
+ kBsonTopologyVersionLow,
+ duration_cast<HelloRTT>(mongo::Milliseconds(40)));
topologyManager.onServerDescription(isMasterOutcome);
topologyDescription = topologyManager.getTopologyDescription();
auto newServerDescription = topologyDescription->getServers()[0];
@@ -153,8 +153,8 @@ TEST_F(TopologyManagerTestFixture, ShouldUpdateTopologyVersionOnErrorIfSent) {
kBsonTopologyVersionLow.getObjectField("topologyVersion"));
// If isMasterOutcome is not successful, should preserve old topologyVersion
- isMasterOutcome = IsMasterOutcome(
- serverDescription->getAddress(), kBsonTopologyVersionLow, "an error occurred");
+ isMasterOutcome =
+ HelloOutcome(serverDescription->getAddress(), kBsonTopologyVersionLow, "an error occurred");
topologyManager.onServerDescription(isMasterOutcome);
topologyDescription = topologyManager.getTopologyDescription();
newServerDescription = topologyDescription->getServers()[0];
@@ -172,9 +172,9 @@ TEST_F(TopologyManagerTestFixture, ShouldNotUpdateServerDescriptionIfNewTopology
ASSERT(serverDescription->getTopologyVersion() == boost::none);
// If previous topologyVersion is boost::none, should update to new topologyVersion
- auto isMasterOutcome = IsMasterOutcome(serverDescription->getAddress(),
- kBsonTopologyVersionHigh,
- duration_cast<IsMasterRTT>(mongo::Milliseconds(40)));
+ auto isMasterOutcome = HelloOutcome(serverDescription->getAddress(),
+ kBsonTopologyVersionHigh,
+ duration_cast<HelloRTT>(mongo::Milliseconds(40)));
topologyManager.onServerDescription(isMasterOutcome);
topologyDescription = topologyManager.getTopologyDescription();
auto newServerDescription = topologyDescription->getServers()[0];
@@ -182,7 +182,7 @@ TEST_F(TopologyManagerTestFixture, ShouldNotUpdateServerDescriptionIfNewTopology
kBsonTopologyVersionHigh.getObjectField("topologyVersion"));
// If isMasterOutcome is not successful, should preserve old topologyVersion
- isMasterOutcome = IsMasterOutcome(serverDescription->getAddress(), kBsonTopologyVersionLow);
+ isMasterOutcome = HelloOutcome(serverDescription->getAddress(), kBsonTopologyVersionLow);
topologyManager.onServerDescription(isMasterOutcome);
topologyDescription = topologyManager.getTopologyDescription();
newServerDescription = topologyDescription->getServers()[0];
diff --git a/src/mongo/client/server_ping_monitor.cpp b/src/mongo/client/server_ping_monitor.cpp
index 30ad5806e0d..65a8ae90c63 100644
--- a/src/mongo/client/server_ping_monitor.cpp
+++ b/src/mongo/client/server_ping_monitor.cpp
@@ -232,7 +232,7 @@ void ServerPingMonitor::shutdown() {
}
}
-void ServerPingMonitor::onServerHandshakeCompleteEvent(sdam::IsMasterRTT durationMs,
+void ServerPingMonitor::onServerHandshakeCompleteEvent(sdam::HelloRTT durationMs,
const HostAndPort& address,
const BSONObj reply) {
stdx::lock_guard lk(_mutex);
diff --git a/src/mongo/client/server_ping_monitor.h b/src/mongo/client/server_ping_monitor.h
index 13f6fc250e5..2713cb6ae99 100644
--- a/src/mongo/client/server_ping_monitor.h
+++ b/src/mongo/client/server_ping_monitor.h
@@ -153,7 +153,7 @@ public:
* The first isMaster exchange for a connection to the server succeeded. Creates a new
* SingleServerPingMonitor to monitor the new replica set member.
*/
- void onServerHandshakeCompleteEvent(sdam::IsMasterRTT durationMs,
+ void onServerHandshakeCompleteEvent(sdam::HelloRTT durationMs,
const HostAndPort& address,
const BSONObj reply = BSONObj());
diff --git a/src/mongo/client/server_ping_monitor_test.cpp b/src/mongo/client/server_ping_monitor_test.cpp
index 2a86b31615e..154d82ea459 100644
--- a/src/mongo/client/server_ping_monitor_test.cpp
+++ b/src/mongo/client/server_ping_monitor_test.cpp
@@ -48,7 +48,7 @@
namespace mongo {
namespace {
-const sdam::IsMasterRTT initialRTT = duration_cast<Milliseconds>(Milliseconds(100));
+const sdam::HelloRTT initialRTT = duration_cast<Milliseconds>(Milliseconds(100));
using executor::NetworkInterfaceMock;
using executor::RemoteCommandResponse;
using executor::ThreadPoolExecutorTest;
diff --git a/src/mongo/client/streamable_replica_set_monitor.cpp b/src/mongo/client/streamable_replica_set_monitor.cpp
index 3ed1138c23a..204c33d4c64 100644
--- a/src/mongo/client/streamable_replica_set_monitor.cpp
+++ b/src/mongo/client/streamable_replica_set_monitor.cpp
@@ -641,7 +641,7 @@ void StreamableReplicaSetMonitor::onTopologyDescriptionChangedEvent(
void StreamableReplicaSetMonitor::onServerHeartbeatSucceededEvent(const HostAndPort& hostAndPort,
const BSONObj reply) {
// After the inital handshake, isMasterResponses should not update the RTT with durationMs.
- IsMasterOutcome outcome(hostAndPort, reply, boost::none);
+ HelloOutcome outcome(hostAndPort, reply, boost::none);
_topologyManager->onServerDescription(outcome);
}
@@ -663,7 +663,7 @@ void StreamableReplicaSetMonitor::onServerHandshakeFailedEvent(const HostAndPort
_failedHost(HostAndPort(address), status, reply, HandshakeStage::kPreHandshake, false);
};
-void StreamableReplicaSetMonitor::onServerPingSucceededEvent(sdam::IsMasterRTT durationMS,
+void StreamableReplicaSetMonitor::onServerPingSucceededEvent(sdam::HelloRTT durationMS,
const HostAndPort& hostAndPort) {
LOGV2_DEBUG(4668132,
kLowerLogLevel,
@@ -674,10 +674,10 @@ void StreamableReplicaSetMonitor::onServerPingSucceededEvent(sdam::IsMasterRTT d
_topologyManager->onServerRTTUpdated(hostAndPort, durationMS);
}
-void StreamableReplicaSetMonitor::onServerHandshakeCompleteEvent(sdam::IsMasterRTT durationMs,
+void StreamableReplicaSetMonitor::onServerHandshakeCompleteEvent(sdam::HelloRTT durationMs,
const HostAndPort& hostAndPort,
const BSONObj reply) {
- IsMasterOutcome outcome(hostAndPort, reply, durationMs);
+ HelloOutcome outcome(hostAndPort, reply, durationMs);
_topologyManager->onServerDescription(outcome);
}
diff --git a/src/mongo/client/streamable_replica_set_monitor.h b/src/mongo/client/streamable_replica_set_monitor.h
index 4055a299b50..bcb5b7cdb76 100644
--- a/src/mongo/client/streamable_replica_set_monitor.h
+++ b/src/mongo/client/streamable_replica_set_monitor.h
@@ -178,10 +178,10 @@ private:
void onServerPingFailedEvent(const HostAndPort& hostAndPort, const Status& status) override;
- void onServerPingSucceededEvent(sdam::IsMasterRTT durationMS,
+ void onServerPingSucceededEvent(sdam::HelloRTT durationMS,
const HostAndPort& hostAndPort) override;
- void onServerHandshakeCompleteEvent(sdam::IsMasterRTT durationMs,
+ void onServerHandshakeCompleteEvent(sdam::HelloRTT durationMs,
const HostAndPort& hostAndPort,
const BSONObj reply) override;
diff --git a/src/mongo/client/streamable_replica_set_monitor_error_handler.h b/src/mongo/client/streamable_replica_set_monitor_error_handler.h
index 0b92ade4432..c5d49c093a7 100644
--- a/src/mongo/client/streamable_replica_set_monitor_error_handler.h
+++ b/src/mongo/client/streamable_replica_set_monitor_error_handler.h
@@ -40,7 +40,7 @@ public:
struct ErrorActions {
bool dropConnections = false;
bool requestImmediateCheck = false;
- boost::optional<sdam::IsMasterOutcome> isMasterOutcome;
+ boost::optional<sdam::HelloOutcome> isMasterOutcome;
BSONObj toBSON() const;
};
@@ -58,10 +58,10 @@ public:
BSONObj bson) noexcept = 0;
protected:
- sdam::IsMasterOutcome _createErrorIsMasterOutcome(const HostAndPort& host,
- boost::optional<BSONObj> bson,
- const Status& status) const {
- return sdam::IsMasterOutcome(host, bson ? *bson : BSONObj(), status.toString());
+ sdam::HelloOutcome _createErrorIsMasterOutcome(const HostAndPort& host,
+ boost::optional<BSONObj> bson,
+ const Status& status) const {
+ return sdam::HelloOutcome(host, bson ? *bson : BSONObj(), status.toString());
}
};
diff --git a/src/mongo/client/streamable_replica_set_monitor_error_handler_test.cpp b/src/mongo/client/streamable_replica_set_monitor_error_handler_test.cpp
index 13f119dc73c..6ede36672f8 100644
--- a/src/mongo/client/streamable_replica_set_monitor_error_handler_test.cpp
+++ b/src/mongo/client/streamable_replica_set_monitor_error_handler_test.cpp
@@ -118,8 +118,8 @@ public:
inline static const HostAndPort kHost = HostAndPort("foobar:123");
inline static const std::string kErrorMessage = "an error message";
inline static const BSONObj kErrorBson = BSONObjBuilder().append("ok", 0).obj();
- inline static const sdam::IsMasterOutcome kErrorIsMasterOutcome =
- sdam::IsMasterOutcome(kHost, kErrorBson, kErrorMessage);
+ inline static const sdam::HelloOutcome kErrorIsMasterOutcome =
+ sdam::HelloOutcome(kHost, kErrorBson, kErrorMessage);
static constexpr bool kApplicationOperation = true;
static constexpr bool kMonitoringOperation = false;