diff options
author | jannaerin <golden.janna@gmail.com> | 2020-05-08 12:01:45 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-05-13 20:03:43 +0000 |
commit | 0765846b1a3a5035db49e29e61648921529402aa (patch) | |
tree | 7fcb7fc0c148e7c62bf1dbf0a79b14fa82228d87 | |
parent | a585cd2b6655af2542cdd153c4e9852d270b497d (diff) | |
download | mongo-0765846b1a3a5035db49e29e61648921529402aa.tar.gz |
SERVER-48040 Remove 'streamable' and 'poolResetCounter' from ServerDescription
(cherry picked from commit 4b32770c6e77225d3d5cbd46359cf905d0ecd216)
-rw-r--r-- | src/mongo/client/sdam/server_description.cpp | 39 | ||||
-rw-r--r-- | src/mongo/client/sdam/server_description.h | 13 | ||||
-rw-r--r-- | src/mongo/client/sdam/server_description_builder.cpp | 10 | ||||
-rw-r--r-- | src/mongo/client/sdam/server_description_builder.h | 2 | ||||
-rw-r--r-- | src/mongo/client/sdam/server_description_test.cpp | 43 | ||||
-rw-r--r-- | src/mongo/client/sdam/topology_manager.cpp | 10 | ||||
-rw-r--r-- | src/mongo/client/sdam/topology_manager_test.cpp | 35 |
7 files changed, 7 insertions, 145 deletions
diff --git a/src/mongo/client/sdam/server_description.cpp b/src/mongo/client/sdam/server_description.cpp index 70686b3d660..c386e3beab3 100644 --- a/src/mongo/client/sdam/server_description.cpp +++ b/src/mongo/client/sdam/server_description.cpp @@ -54,8 +54,7 @@ std::set<ServerType> kDataServerTypes{ ServerDescription::ServerDescription(ClockSource* clockSource, const IsMasterOutcome& isMasterOutcome, boost::optional<IsMasterRTT> lastRtt, - boost::optional<TopologyVersion> topologyVersion, - boost::optional<int> poolResetCounter) + boost::optional<TopologyVersion> topologyVersion) : ServerDescription(isMasterOutcome.getServer()) { if (isMasterOutcome.isSuccess()) { const auto response = *isMasterOutcome.getResponse(); @@ -73,7 +72,6 @@ ServerDescription::ServerDescription(ClockSource* clockSource, saveHosts(response); saveTags(response.getObjectField("tags")); saveElectionId(response.getField("electionId")); - saveStreamable(response.getField("streamable")); auto lsTimeoutField = response.getField("logicalSessionTimeoutMinutes"); if (lsTimeoutField.type() == BSONType::NumberInt) { @@ -94,16 +92,9 @@ ServerDescription::ServerDescription(ClockSource* clockSource, if (primaryField.type() == BSONType::String) { _primary = response.getStringField("primary"); } - - if (poolResetCounter) { - _poolResetCounter = poolResetCounter.get(); - } } else { _error = isMasterOutcome.getErrorMsg(); _topologyVersion = topologyVersion; - if (poolResetCounter) { - _poolResetCounter = poolResetCounter.get(); - } } } @@ -151,15 +142,6 @@ void ServerDescription::saveElectionId(BSONElement electionId) { } } -void ServerDescription::saveStreamable(BSONElement streamableField) { - if (_type == ServerType::kUnknown) { - _streamable = false; - return; - } - - _streamable = streamableField && streamableField.Bool(); -} - void ServerDescription::calculateRtt(const boost::optional<IsMasterRTT> currentRtt, const boost::optional<IsMasterRTT> lastRtt) { if (getType() == ServerType::kUnknown) { @@ -310,14 +292,6 @@ const boost::optional<TopologyVersion>& ServerDescription::getTopologyVersion() return _topologyVersion; } -int ServerDescription::getPoolResetCounter() { - return _poolResetCounter; -} - -bool ServerDescription::isStreamable() const { - return _streamable; -} - bool ServerDescription::isEquivalent(const ServerDescription& other) const { if (_topologyVersion && other._topologyVersion && ((_topologyVersion->getProcessId() != other._topologyVersion->getProcessId()) || @@ -340,9 +314,7 @@ bool ServerDescription::isEquivalent(const ServerDescription& other) const { other._setVersion, other._electionId, other._primary, - other._logicalSessionTimeoutMinutes, - other._streamable, - other._poolResetCounter); + other._logicalSessionTimeoutMinutes); auto thisValues = std::tie(_type, _minWireVersion, _maxWireVersion, @@ -355,9 +327,7 @@ bool ServerDescription::isEquivalent(const ServerDescription& other) const { _setVersion, _electionId, _primary, - _logicalSessionTimeoutMinutes, - _streamable, - _poolResetCounter); + _logicalSessionTimeoutMinutes); return thisValues == otherValues; } @@ -393,9 +363,6 @@ BSONObj ServerDescription::toBson() const { bson.append("minWireVersion", _minWireVersion); bson.append("maxWireVersion", _maxWireVersion); - bson.append("streamable", _streamable); - bson.append("poolResetCounter", _poolResetCounter); - if (_me) { bson.append("me", *_me); diff --git a/src/mongo/client/sdam/server_description.h b/src/mongo/client/sdam/server_description.h index 159d7948738..75a9ab7f229 100644 --- a/src/mongo/client/sdam/server_description.h +++ b/src/mongo/client/sdam/server_description.h @@ -60,8 +60,7 @@ public: ServerDescription(ClockSource* clockSource, const IsMasterOutcome& isMasterOutcome, boost::optional<IsMasterRTT> lastRtt = boost::none, - boost::optional<TopologyVersion> topologyVersion = boost::none, - boost::optional<int> poolResetCounter = boost::none); + boost::optional<TopologyVersion> topologyVersion = boost::none); /** * This determines if a server description is equivalent according to the Server Discovery and @@ -82,13 +81,11 @@ public: const boost::optional<std::string>& getError() const; const boost::optional<IsMasterRTT>& getRtt() const; const boost::optional<int>& getLogicalSessionTimeoutMinutes() const; - int getPoolResetCounter(); // server capabilities int getMinWireVersion() const; int getMaxWireVersion() const; bool isDataBearingServer() const; - bool isStreamable() const; // server 'time' const Date_t getLastUpdateTime() const; @@ -128,7 +125,6 @@ private: void saveTags(BSONObj tagsObj); void saveElectionId(BSONElement electionId); void saveTopologyVersion(BSONElement topologyVersionField); - void saveStreamable(BSONElement streamableField); static inline const std::string kIsDbGrid = "isdbgrid"; static inline const double kRttAlpha = 0.2; @@ -197,13 +193,6 @@ private: // (=) logicalSessionTimeoutMinutes: integer or null. Default null. boost::optional<int> _logicalSessionTimeoutMinutes; - // (=) streamable: whether this server can stream isMaster responses. Default false. - bool _streamable = false; - - // (=) poolResetCounter: integer, default 0. Initialized when client first creates connection - // pool for server. Incremented on network error or timeout. - int _poolResetCounter = 0; - // The topology description of that we are a part of. Since this is a weak_ptr, code that // accesses this variable should ensure that the TopologyDescription cannot be destroyed by // holding a copy of it's shared_ptr. The SdamServerSelector uses this variable when calculating diff --git a/src/mongo/client/sdam/server_description_builder.cpp b/src/mongo/client/sdam/server_description_builder.cpp index 534a3ea8454..52fb34ee030 100644 --- a/src/mongo/client/sdam/server_description_builder.cpp +++ b/src/mongo/client/sdam/server_description_builder.cpp @@ -135,14 +135,4 @@ ServerDescriptionBuilder& ServerDescriptionBuilder::withTopologyVersion( _instance->_topologyVersion = topologyVersion; return *this; } - -ServerDescriptionBuilder& ServerDescriptionBuilder::withPoolResetCounter(int poolResetCounter) { - _instance->_poolResetCounter = poolResetCounter; - return *this; -} - -ServerDescriptionBuilder& ServerDescriptionBuilder::withStreamable(bool isStreamable) { - _instance->_streamable = isStreamable; - return *this; -} }; // namespace mongo::sdam diff --git a/src/mongo/client/sdam/server_description_builder.h b/src/mongo/client/sdam/server_description_builder.h index 85078f1b287..67f0e4b01c8 100644 --- a/src/mongo/client/sdam/server_description_builder.h +++ b/src/mongo/client/sdam/server_description_builder.h @@ -56,12 +56,10 @@ public: ServerDescriptionBuilder& withError(const std::string& error); ServerDescriptionBuilder& withLogicalSessionTimeoutMinutes( const boost::optional<int> logicalSessionTimeoutMinutes); - ServerDescriptionBuilder& withPoolResetCounter(int poolResetCounter); // server capabilities ServerDescriptionBuilder& withMinWireVersion(int minVersion); ServerDescriptionBuilder& withMaxWireVersion(int maxVersion); - ServerDescriptionBuilder& withStreamable(bool isStreamable); // server 'time' ServerDescriptionBuilder& withLastWriteDate(const Date_t& lastWriteDate); diff --git a/src/mongo/client/sdam/server_description_test.cpp b/src/mongo/client/sdam/server_description_test.cpp index 8ed40911927..bb7d35ae7e9 100644 --- a/src/mongo/client/sdam/server_description_test.cpp +++ b/src/mongo/client/sdam/server_description_test.cpp @@ -188,21 +188,6 @@ TEST(ServerDescriptionEqualityTest, ShouldCompareTopologyVersion) { ASSERT_EQUALS(a, a); } -TEST(ServerDescriptionEqualityTest, ShouldCompareStreamable) { - auto a = *ServerDescriptionBuilder().withStreamable(true).instance(); - // Default for _streamble is false. - auto b = *ServerDescriptionBuilder().instance(); - ASSERT_NOT_EQUALS(a, b); - ASSERT_EQUALS(a, a); -} - -TEST(ServerDescriptionEqualityTest, ShouldComparePoolResetCounter) { - auto a = *ServerDescriptionBuilder().withPoolResetCounter(1).instance(); - auto b = *ServerDescriptionBuilder().withPoolResetCounter(2).instance(); - ASSERT_NOT_EQUALS(a, b); - ASSERT_EQUALS(a, a); -} - class ServerDescriptionTestFixture : public SdamTestFixture { protected: // returns a set containing the elements in the given bson array with lowercase values. @@ -280,7 +265,6 @@ protected: okBuilder().append("logicalSessionTimeoutMinutes", 1).obj(); static inline const auto kTopologyVersion = okBuilder().append("topologyVersion", TopologyVersion(OID::max(), 0).toBSON()).obj(); - static inline const auto kStreamable = okBuilder().append("streamable", true).obj(); }; TEST_F(ServerDescriptionTestFixture, ShouldParseTypeAsUnknownForIsMasterError) { @@ -479,31 +463,12 @@ TEST_F(ServerDescriptionTestFixture, ShouldStoreTopologyVersion) { TopologyVersion::parse(IDLParserErrorContext("TopologyVersion"), kTopologyVersion.getObjectField("topologyVersion")); - auto description = ServerDescription(clockSource, - response, - boost::none /*lastRtt*/, - topologyVersion, - boost::none /*poolResetCounter*/); + auto description = + ServerDescription(clockSource, response, boost::none /*lastRtt*/, topologyVersion); ASSERT_EQUALS(topologyVersion.getProcessId(), description.getTopologyVersion()->getProcessId()); ASSERT_EQUALS(topologyVersion.getCounter(), description.getTopologyVersion()->getCounter()); } -TEST_F(ServerDescriptionTestFixture, ShouldStoreStreamable) { - auto response = IsMasterOutcome( - "foo:1234", kStreamable, duration_cast<IsMasterRTT>(mongo::Milliseconds(40))); - auto description = ServerDescription(clockSource, response); - ASSERT_EQUALS(true, description.isStreamable()); -} - -TEST_F(ServerDescriptionTestFixture, ShouldStorePoolResetCounter) { - auto response = IsMasterOutcome( - "foo:1234", kStreamable, duration_cast<IsMasterRTT>(mongo::Milliseconds(40))); - auto description = ServerDescription( - clockSource, response, boost::none /*lastRtt*/, boost::none /*topologyVersion*/, 1); - ASSERT_EQUALS(1, description.getPoolResetCounter()); -} - - TEST_F(ServerDescriptionTestFixture, ShouldStoreServerAddressOnError) { auto response = IsMasterOutcome("foo:1234", kTopologyVersion, "an error occurred"); auto description = ServerDescription(clockSource, response); @@ -528,8 +493,6 @@ TEST_F(ServerDescriptionTestFixture, ShouldStoreCorrectDefaultValuesOnSuccess) { ASSERT_EQUALS(boost::none, description.getPrimary()); ASSERT_EQUALS(boost::none, description.getLogicalSessionTimeoutMinutes()); ASSERT(boost::none == description.getTopologyVersion()); - ASSERT_EQUALS(false, description.isStreamable()); - ASSERT_EQUALS(0, description.getPoolResetCounter()); } @@ -550,7 +513,5 @@ TEST_F(ServerDescriptionTestFixture, ShouldStoreCorrectDefaultValuesOnFailure) { ASSERT_EQUALS(boost::none, description.getPrimary()); ASSERT_EQUALS(boost::none, description.getLogicalSessionTimeoutMinutes()); ASSERT(boost::none == description.getTopologyVersion()); - ASSERT_EQUALS(false, description.isStreamable()); - ASSERT_EQUALS(0, description.getPoolResetCounter()); } }; // namespace mongo::sdam diff --git a/src/mongo/client/sdam/topology_manager.cpp b/src/mongo/client/sdam/topology_manager.cpp index ae39a253b4d..79a2200edaf 100644 --- a/src/mongo/client/sdam/topology_manager.cpp +++ b/src/mongo/client/sdam/topology_manager.cpp @@ -76,14 +76,12 @@ bool TopologyManager::onServerDescription(const IsMasterOutcome& isMasterOutcome boost::optional<IsMasterRTT> lastRTT; boost::optional<TopologyVersion> lastTopologyVersion; - boost::optional<int> lastPoolResetCounter; const auto& lastServerDescription = _topologyDescription->findServerByAddress(isMasterOutcome.getServer()); if (lastServerDescription) { lastRTT = (*lastServerDescription)->getRtt(); lastTopologyVersion = (*lastServerDescription)->getTopologyVersion(); - lastPoolResetCounter = (*lastServerDescription)->getPoolResetCounter(); } boost::optional<TopologyVersion> newTopologyVersion = isMasterOutcome.getTopologyVersion(); @@ -97,14 +95,8 @@ bool TopologyManager::onServerDescription(const IsMasterOutcome& isMasterOutcome return false; } - boost::optional<int> poolResetCounter = lastPoolResetCounter; - if (!isMasterOutcome.isSuccess() && lastPoolResetCounter) { - // Bump the poolResetCounter on error if we have one established already. - poolResetCounter = ++lastPoolResetCounter.get(); - } - auto newServerDescription = std::make_shared<ServerDescription>( - _clockSource, isMasterOutcome, lastRTT, newTopologyVersion, poolResetCounter); + _clockSource, isMasterOutcome, lastRTT, newTopologyVersion); auto oldTopologyDescription = _topologyDescription; _topologyDescription = std::make_shared<TopologyDescription>(*oldTopologyDescription); diff --git a/src/mongo/client/sdam/topology_manager_test.cpp b/src/mongo/client/sdam/topology_manager_test.cpp index 765d784e04f..9d18b3606f9 100644 --- a/src/mongo/client/sdam/topology_manager_test.cpp +++ b/src/mongo/client/sdam/topology_manager_test.cpp @@ -150,40 +150,5 @@ TEST_F(TopologyManagerTestFixture, ShouldNotUpdateServerDescriptionIfNewTopology ASSERT_BSONOBJ_EQ(newServerDescription->getTopologyVersion()->toBSON(), kBsonTopologyVersionHigh.getObjectField("topologyVersion")); } - -TEST_F(TopologyManagerTestFixture, ShouldNowIncrementPoolResetCounterOnSuccess) { - auto config = SdamConfiguration(kOneServer); - TopologyManager topologyManager(config, clockSource); - - auto topologyDescription = topologyManager.getTopologyDescription(); - ASSERT_EQUALS(topologyDescription->getServers().size(), 1); - auto serverDescription = topologyDescription->getServers()[0]; - ASSERT_EQUALS(serverDescription->getPoolResetCounter(), 0); - - // If isMasterOutcome is successful, poolResetCounter should remain the same - IsMasterOutcome isMasterOutcome(serverDescription->getAddress(), kBsonOk); - topologyManager.onServerDescription(isMasterOutcome); - topologyDescription = topologyManager.getTopologyDescription(); - auto newServerDescription = topologyDescription->getServers()[0]; - ASSERT_EQUALS(newServerDescription->getPoolResetCounter(), 0); -} - -TEST_F(TopologyManagerTestFixture, ShouldIncrementPoolResetCounterOnError) { - auto config = SdamConfiguration(kOneServer); - TopologyManager topologyManager(config, clockSource); - - auto topologyDescription = topologyManager.getTopologyDescription(); - ASSERT_EQUALS(topologyDescription->getServers().size(), 1); - auto serverDescription = topologyDescription->getServers()[0]; - ASSERT_EQUALS(serverDescription->getPoolResetCounter(), 0); - - // If isMasterOutcome is successful, poolResetCounter should remain the same - IsMasterOutcome isMasterOutcome( - serverDescription->getAddress(), kBsonTopologyVersionLow, "an error occurred"); - topologyManager.onServerDescription(isMasterOutcome); - topologyDescription = topologyManager.getTopologyDescription(); - auto newServerDescription = topologyDescription->getServers()[0]; - ASSERT_EQUALS(newServerDescription->getPoolResetCounter(), 1); -} }; // namespace sdam }; // namespace mongo |