summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRandolph Tan <randolph@10gen.com>2016-04-07 11:29:26 -0400
committerRandolph Tan <randolph@10gen.com>2016-04-07 18:07:47 -0400
commit9effd11e3c725af58abb87137d8d17b8c814371d (patch)
treec44c57be0c8d7b8be7b9ec5388c3ec961f045145 /src
parent507b138941ed82d73fc31fde4f7324425a38cf8e (diff)
downloadmongo-9effd11e3c725af58abb87137d8d17b8c814371d.tar.gz
SERVER-23598 Race in config.version intialization
Removed the check to determine if config metadata is pre v2.4. Now that config servers are required to be replica sets, they are guaranteed to have the metadata that is at least from v3.2.
Diffstat (limited to 'src')
-rw-r--r--src/mongo/s/catalog/replset/catalog_manager_replica_set.cpp17
-rw-r--r--src/mongo/s/catalog/replset/catalog_manager_replica_set_upgrade_test.cpp68
2 files changed, 0 insertions, 85 deletions
diff --git a/src/mongo/s/catalog/replset/catalog_manager_replica_set.cpp b/src/mongo/s/catalog/replset/catalog_manager_replica_set.cpp
index 609599c850e..547b70b2f7d 100644
--- a/src/mongo/s/catalog/replset/catalog_manager_replica_set.cpp
+++ b/src/mongo/s/catalog/replset/catalog_manager_replica_set.cpp
@@ -1347,23 +1347,6 @@ StatusWith<VersionType> CatalogManagerReplicaSet::_getConfigVersion(OperationCon
}
if (queryResults.empty()) {
- auto countStatus =
- _runCountCommandOnConfig(txn, NamespaceString(ShardType::ConfigNS), BSONObj());
-
- if (!countStatus.isOK()) {
- return countStatus.getStatus();
- }
-
- const auto& shardCount = countStatus.getValue();
- if (shardCount > 0) {
- // Version document doesn't exist, but config.shards is not empty. Assuming that
- // the current config metadata is pre v2.4.
- VersionType versionInfo;
- versionInfo.setMinCompatibleVersion(UpgradeHistory_UnreportedVersion);
- versionInfo.setCurrentVersion(UpgradeHistory_UnreportedVersion);
- return versionInfo;
- }
-
VersionType versionInfo;
versionInfo.setMinCompatibleVersion(UpgradeHistory_EmptyVersion);
versionInfo.setCurrentVersion(UpgradeHistory_EmptyVersion);
diff --git a/src/mongo/s/catalog/replset/catalog_manager_replica_set_upgrade_test.cpp b/src/mongo/s/catalog/replset/catalog_manager_replica_set_upgrade_test.cpp
index 8beb6dcd432..c8e2a975a58 100644
--- a/src/mongo/s/catalog/replset/catalog_manager_replica_set_upgrade_test.cpp
+++ b/src/mongo/s/catalog/replset/catalog_manager_replica_set_upgrade_test.cpp
@@ -182,8 +182,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitNoVersionDocEmptyConfig) {
onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 0);
-
onCommand([](const RemoteCommandRequest& request) {
ASSERT_EQ(HostAndPort("config:123"), request.target);
ASSERT_EQ("config", request.dbname);
@@ -225,38 +223,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitNoVersionDocEmptyConfig) {
future.timed_get(kFutureTimeout);
}
-TEST_F(CatalogManagerReplSetTestFixture, InitNoVersionDocEmptyConfigWithAdmin) {
- configTargeter()->setFindHostReturnValue(HostAndPort("config:123"));
-
- auto future =
- launchAsync([this] { ASSERT_OK(catalogManager()->initConfigVersion(operationContext())); });
-
- onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
-
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 0);
-
- onCommand([](const RemoteCommandRequest& request) {
- ASSERT_EQ(HostAndPort("config:123"), request.target);
- ASSERT_EQ("config", request.dbname);
-
- ASSERT_EQUALS(BSON(rpc::kReplSetMetadataFieldName << 1), request.metadata);
-
- BatchedUpdateRequest actualBatchedUpdate;
- std::string errmsg;
- ASSERT_TRUE(actualBatchedUpdate.parseBSON(request.dbname, request.cmdObj, &errmsg));
- ASSERT_EQUALS(VersionType::ConfigNS, actualBatchedUpdate.getNS().ns());
-
- BatchedCommandResponse response;
- response.setOk(true);
- response.setN(1);
- response.setNModified(1);
-
- return response.toBSON();
- });
-
- future.timed_get(kFutureTimeout);
-}
-
TEST_F(CatalogManagerReplSetTestFixture, InitConfigWriteError) {
configTargeter()->setFindHostReturnValue(HostAndPort("config:123"));
@@ -268,8 +234,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitConfigWriteError) {
onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 0);
-
onCommand([](const RemoteCommandRequest& request) {
return fromjson(R"({
ok: 1,
@@ -286,22 +250,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitConfigWriteError) {
future.timed_get(kFutureTimeout);
}
-TEST_F(CatalogManagerReplSetTestFixture, InitNoVersionDocNonEmptyConfigServer) {
- configTargeter()->setFindHostReturnValue(HostAndPort("config:123"));
-
- auto future = launchAsync([this] {
- auto status = catalogManager()->initConfigVersion(operationContext());
- ASSERT_EQ(ErrorCodes::IncompatibleShardingConfigVersion, status.code());
- ASSERT_FALSE(status.reason().empty());
- });
-
- onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
-
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 1);
-
- future.timed_get(kFutureTimeout);
-}
-
TEST_F(CatalogManagerReplSetTestFixture, InitVersionTooOld) {
configTargeter()->setFindHostReturnValue(HostAndPort("config:123"));
@@ -337,8 +285,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitVersionDuplicateKeyNoOpAfterRetry)
onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 0);
-
onCommand([](const RemoteCommandRequest& request) {
ASSERT_EQ(HostAndPort("config:123"), request.target);
ASSERT_EQ("config", request.dbname);
@@ -390,8 +336,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitVersionDuplicateKeyNoConfigVersionA
onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 0);
-
onCommand([](const RemoteCommandRequest& request) {
ASSERT_EQ(HostAndPort("config:123"), request.target);
ASSERT_EQ("config", request.dbname);
@@ -414,8 +358,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitVersionDuplicateKeyNoConfigVersionA
onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 0);
-
onCommand([](const RemoteCommandRequest& request) {
ASSERT_EQ(HostAndPort("config:123"), request.target);
ASSERT_EQ("config", request.dbname);
@@ -468,8 +410,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitVersionDuplicateKeyTooNewAfterRetry
onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 0);
-
onCommand([](const RemoteCommandRequest& request) {
ASSERT_EQ(HostAndPort("config:123"), request.target);
ASSERT_EQ("config", request.dbname);
@@ -526,8 +466,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitVersionDuplicateKeyMaxRetry) {
for (int x = 0; x < maxRetry; x++) {
onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 0);
-
onCommand([](const RemoteCommandRequest& request) {
ASSERT_EQ(HostAndPort("config:123"), request.target);
ASSERT_EQ("config", request.dbname);
@@ -558,8 +496,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitVersionUpsertNoMatchNoOpAfterRetry)
onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 0);
-
onCommand([](const RemoteCommandRequest& request) {
ASSERT_EQ(HostAndPort("config:123"), request.target);
ASSERT_EQ("config", request.dbname);
@@ -606,8 +542,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitVersionUpsertNoMatchNoConfigVersion
onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 0);
-
onCommand([](const RemoteCommandRequest& request) {
ASSERT_EQ(HostAndPort("config:123"), request.target);
ASSERT_EQ("config", request.dbname);
@@ -625,8 +559,6 @@ TEST_F(CatalogManagerReplSetTestFixture, InitVersionUpsertNoMatchNoConfigVersion
onFindCommand([](const RemoteCommandRequest& request) { return vector<BSONObj>{}; });
- expectCount(HostAndPort("config:123"), NamespaceString("config.shards"), BSONObj(), 0);
-
onCommand([](const RemoteCommandRequest& request) {
ASSERT_EQ(HostAndPort("config:123"), request.target);
ASSERT_EQ("config", request.dbname);