diff options
Diffstat (limited to 'src/mongo')
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; |