summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjannaerin <golden.janna@gmail.com>2020-05-08 12:01:45 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-05-13 20:03:43 +0000
commit0765846b1a3a5035db49e29e61648921529402aa (patch)
tree7fcb7fc0c148e7c62bf1dbf0a79b14fa82228d87
parenta585cd2b6655af2542cdd153c4e9852d270b497d (diff)
downloadmongo-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.cpp39
-rw-r--r--src/mongo/client/sdam/server_description.h13
-rw-r--r--src/mongo/client/sdam/server_description_builder.cpp10
-rw-r--r--src/mongo/client/sdam/server_description_builder.h2
-rw-r--r--src/mongo/client/sdam/server_description_test.cpp43
-rw-r--r--src/mongo/client/sdam/topology_manager.cpp10
-rw-r--r--src/mongo/client/sdam/topology_manager_test.cpp35
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