summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpencer Jackson <spencer.jackson@mongodb.com>2022-07-11 21:21:10 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-07-15 19:04:11 +0000
commit6f06862f5d76a46f3570ff3a6ed2d616991d8e5a (patch)
tree65e592e11aab291892ad42e5a86df54ef7183cf3
parent3c126a0e3af8184a07de660c733c2a25bc191094 (diff)
downloadmongo-6f06862f5d76a46f3570ff3a6ed2d616991d8e5a.tar.gz
SERVER-65010 Remove FCV guards for user write blocking
-rw-r--r--jstests/auth/lib/commands_lib.js2
-rw-r--r--src/mongo/db/client_metadata_propagation_egress_hook.cpp5
-rw-r--r--src/mongo/db/commands/SConscript1
-rw-r--r--src/mongo/db/commands/set_feature_compatibility_version_command.cpp24
-rw-r--r--src/mongo/db/commands/set_user_write_block_mode_command.cpp9
-rw-r--r--src/mongo/db/s/config/configsvr_set_user_write_block_mode_command.cpp9
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp7
-rw-r--r--src/mongo/db/s/sharding_ddl_util.cpp5
-rw-r--r--src/mongo/db/server_feature_flags.idl5
9 files changed, 3 insertions, 64 deletions
diff --git a/jstests/auth/lib/commands_lib.js b/jstests/auth/lib/commands_lib.js
index 5ac60bcc398..a95c010f9ac 100644
--- a/jstests/auth/lib/commands_lib.js
+++ b/jstests/auth/lib/commands_lib.js
@@ -5770,7 +5770,7 @@ var authCommandsLib = {
skipTest: (conn) => {
const hello = assert.commandWorked(conn.getDB("admin").runCommand({hello: 1}));
const isStandalone = hello.msg !== "isdbgrid" && !hello.hasOwnProperty('setName');
- return !TestData.setParameters.featureFlagUserWriteBlocking || isStandalone;
+ return isStandalone;
},
testcases: [
{
diff --git a/src/mongo/db/client_metadata_propagation_egress_hook.cpp b/src/mongo/db/client_metadata_propagation_egress_hook.cpp
index f6f4be55beb..30d00e29b1d 100644
--- a/src/mongo/db/client_metadata_propagation_egress_hook.cpp
+++ b/src/mongo/db/client_metadata_propagation_egress_hook.cpp
@@ -29,7 +29,6 @@
#include "mongo/db/client_metadata_propagation_egress_hook.h"
-#include "mongo/db/server_feature_flags_gen.h"
#include "mongo/db/write_block_bypass.h"
#include "mongo/rpc/metadata/client_metadata.h"
#include "mongo/rpc/metadata/impersonated_user_metadata.h"
@@ -50,9 +49,7 @@ Status ClientMetadataPropagationEgressHook::writeRequestMetadata(OperationContex
metadata->writeToMetadata(metadataBob);
}
- if (gFeatureFlagUserWriteBlocking.isEnabled(serverGlobalParams.featureCompatibility)) {
- WriteBlockBypass::get(opCtx).writeAsMetadata(metadataBob);
- }
+ WriteBlockBypass::get(opCtx).writeAsMetadata(metadataBob);
return Status::OK();
} catch (...) {
diff --git a/src/mongo/db/commands/SConscript b/src/mongo/db/commands/SConscript
index c78dc3c069e..a0399b02406 100644
--- a/src/mongo/db/commands/SConscript
+++ b/src/mongo/db/commands/SConscript
@@ -587,7 +587,6 @@ env.Library(
'$BUILD_DIR/mongo/db/s/sharding_runtime_d',
'$BUILD_DIR/mongo/db/s/transaction_coordinator',
'$BUILD_DIR/mongo/db/s/user_writes_recoverable_critical_section',
- '$BUILD_DIR/mongo/db/server_feature_flags',
'$BUILD_DIR/mongo/db/server_options_core',
'$BUILD_DIR/mongo/db/serverless/shard_split_donor_service',
'$BUILD_DIR/mongo/db/tenant_id',
diff --git a/src/mongo/db/commands/set_feature_compatibility_version_command.cpp b/src/mongo/db/commands/set_feature_compatibility_version_command.cpp
index 874771acd0c..fcbe33dc343 100644
--- a/src/mongo/db/commands/set_feature_compatibility_version_command.cpp
+++ b/src/mongo/db/commands/set_feature_compatibility_version_command.cpp
@@ -64,7 +64,6 @@
#include "mongo/db/repl/tenant_migration_donor_service.h"
#include "mongo/db/repl/tenant_migration_recipient_service.h"
#include "mongo/db/s/balancer/balancer.h"
-#include "mongo/db/s/config/configsvr_coordinator_service.h"
#include "mongo/db/s/config/sharding_catalog_manager.h"
#include "mongo/db/s/migration_coordinator_document_gen.h"
#include "mongo/db/s/range_deletion_util.h"
@@ -74,7 +73,6 @@
#include "mongo/db/s/sharding_ddl_coordinator_service.h"
#include "mongo/db/s/sharding_util.h"
#include "mongo/db/s/transaction_coordinator_service.h"
-#include "mongo/db/server_feature_flags_gen.h"
#include "mongo/db/server_options.h"
#include "mongo/db/serverless/shard_split_donor_service.h"
#include "mongo/db/session_catalog.h"
@@ -341,28 +339,6 @@ public:
const auto fcvChangeRegion(
FeatureCompatibilityVersion::enterFCVChangeRegion(opCtx));
- if (!gFeatureFlagUserWriteBlocking.isEnabledOnVersion(requestedVersion)) {
- // TODO SERVER-65010 Remove this scope once 6.0 has branched out
-
- if (serverGlobalParams.clusterRole == ClusterRole::ConfigServer) {
- uassert(
- ErrorCodes::CannotDowngrade,
- "Cannot downgrade while user write blocking is being changed",
- ConfigsvrCoordinatorService::getService(opCtx)
- ->areAllCoordinatorsOfTypeFinished(
- opCtx, ConfigsvrCoordinatorTypeEnum::kSetUserWriteBlockMode));
- }
-
- DBDirectClient client(opCtx);
-
- const bool isBlockingUserWrites =
- client.count(NamespaceString::kUserWritesCriticalSectionsNamespace) != 0;
-
- uassert(ErrorCodes::CannotDowngrade,
- "Cannot downgrade while user write blocking is enabled.",
- !isBlockingUserWrites);
- }
-
FeatureCompatibilityVersion::updateFeatureCompatibilityVersionDocument(
opCtx,
actualVersion,
diff --git a/src/mongo/db/commands/set_user_write_block_mode_command.cpp b/src/mongo/db/commands/set_user_write_block_mode_command.cpp
index 89c9dc5c464..bd8c89dcaf8 100644
--- a/src/mongo/db/commands/set_user_write_block_mode_command.cpp
+++ b/src/mongo/db/commands/set_user_write_block_mode_command.cpp
@@ -32,14 +32,12 @@
#include "mongo/db/auth/authorization_session.h"
#include "mongo/db/commands.h"
-#include "mongo/db/commands/feature_compatibility_version.h"
#include "mongo/db/commands/set_user_write_block_mode_gen.h"
#include "mongo/db/index_builds_coordinator.h"
#include "mongo/db/repl/repl_client_info.h"
#include "mongo/db/repl/replication_coordinator.h"
#include "mongo/db/s/global_user_write_block_state.h"
#include "mongo/db/s/user_writes_recoverable_critical_section_service.h"
-#include "mongo/db/server_feature_flags_gen.h"
#include "mongo/logv2/log.h"
#define MONGO_LOGV2_DEFAULT_COMPONENT ::mongo::logv2::LogComponent::kAccessControl
@@ -82,13 +80,6 @@ public:
// way we enable/disable user index build blocking is not concurrency-safe.
stdx::lock_guard lock(_mutex);
{
- // TODO SERVER-65010 Remove FCV guard once 6.0 has branched out
- FixedFCVRegion fixedFcvRegion(opCtx);
- uassert(ErrorCodes::IllegalOperation,
- "featureFlagUserWriteBlocking not enabled",
- gFeatureFlagUserWriteBlocking.isEnabled(
- serverGlobalParams.featureCompatibility));
-
if (request().getGlobal()) {
// Enabling write block mode on a replicaset requires several steps
// First, we must prevent new index builds from starting
diff --git a/src/mongo/db/s/config/configsvr_set_user_write_block_mode_command.cpp b/src/mongo/db/s/config/configsvr_set_user_write_block_mode_command.cpp
index edb57945e97..8d18a4db889 100644
--- a/src/mongo/db/s/config/configsvr_set_user_write_block_mode_command.cpp
+++ b/src/mongo/db/s/config/configsvr_set_user_write_block_mode_command.cpp
@@ -32,10 +32,8 @@
#include "mongo/db/auth/authorization_session.h"
#include "mongo/db/commands.h"
-#include "mongo/db/commands/feature_compatibility_version.h"
#include "mongo/db/s/config/configsvr_coordinator_service.h"
#include "mongo/db/s/config/set_user_write_block_mode_coordinator.h"
-#include "mongo/db/server_feature_flags_gen.h"
#include "mongo/logv2/log.h"
#include "mongo/s/grid.h"
#include "mongo/s/request_types/sharded_ddl_commands_gen.h"
@@ -65,13 +63,6 @@ public:
const auto startBlocking = request().getGlobal();
const auto coordinatorCompletionFuture = [&]() -> SharedSemiFuture<void> {
- // TODO SERVER-65010 Remove FCV guard once 6.0 has branched out
- FixedFCVRegion fixedFcvRegion(opCtx);
- uassert(ErrorCodes::IllegalOperation,
- "featureFlagUserWriteBlocking not enabled",
- gFeatureFlagUserWriteBlocking.isEnabled(
- serverGlobalParams.featureCompatibility));
-
SetUserWriteBlockModeCoordinatorDocument coordinatorDoc{startBlocking};
coordinatorDoc.setConfigsvrCoordinatorMetadata(
{ConfigsvrCoordinatorTypeEnum::kSetUserWriteBlockMode});
diff --git a/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp b/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp
index 27bbbdb74b5..c02b9e38ad0 100644
--- a/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp
+++ b/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp
@@ -65,7 +65,6 @@
#include "mongo/db/s/type_shard_identity.h"
#include "mongo/db/s/user_writes_critical_section_document_gen.h"
#include "mongo/db/s/user_writes_recoverable_critical_section_service.h"
-#include "mongo/db/server_feature_flags_gen.h"
#include "mongo/db/transaction_api.h"
#include "mongo/db/vector_clock_mutable.h"
#include "mongo/db/wire_version.h"
@@ -1030,12 +1029,6 @@ void ShardingCatalogManager::_setUserWriteBlockingStateOnNewShard(OperationConte
invariant(doc.getNss() ==
UserWritesRecoverableCriticalSectionService::kGlobalUserWritesNamespace);
- // We must be running in an FCV that supports user writes blocking. This has to be true
- // because it is only possible to enable user-write blocking on an FCV that supports it, and
- // because it's not possible to downgrade to an FCV that doesn't support user write blocking
- // is enabled.
- invariant(gFeatureFlagUserWriteBlocking.isEnabled(serverGlobalParams.featureCompatibility));
-
const auto makeShardsvrSetUserWriteBlockModeCommand =
[](ShardsvrSetUserWriteBlockModePhaseEnum phase) -> BSONObj {
ShardsvrSetUserWriteBlockMode shardsvrSetUserWriteBlockModeCmd;
diff --git a/src/mongo/db/s/sharding_ddl_util.cpp b/src/mongo/db/s/sharding_ddl_util.cpp
index f480a360119..c89f57f68f1 100644
--- a/src/mongo/db/s/sharding_ddl_util.cpp
+++ b/src/mongo/db/s/sharding_ddl_util.cpp
@@ -40,7 +40,6 @@
#include "mongo/db/s/shard_filtering_metadata_refresh.h"
#include "mongo/db/s/sharding_logging.h"
#include "mongo/db/s/sharding_util.h"
-#include "mongo/db/server_feature_flags_gen.h"
#include "mongo/db/vector_clock.h"
#include "mongo/db/write_block_bypass.h"
#include "mongo/logv2/log.h"
@@ -200,9 +199,7 @@ std::vector<AsyncRequestsSender::Response> sendAuthenticatedCommandToShards(
// the command
BSONObjBuilder bob(command);
rpc::writeAuthDataToImpersonatedUserMetadata(opCtx, &bob);
- if (gFeatureFlagUserWriteBlocking.isEnabled(serverGlobalParams.featureCompatibility)) {
- WriteBlockBypass::get(opCtx).writeAsMetadata(&bob);
- }
+ WriteBlockBypass::get(opCtx).writeAsMetadata(&bob);
auto authenticatedCommand = bob.obj();
return sharding_util::sendCommandToShards(
opCtx, dbName, authenticatedCommand, shardIds, executor);
diff --git a/src/mongo/db/server_feature_flags.idl b/src/mongo/db/server_feature_flags.idl
index 321b7ada04e..b703d357899 100644
--- a/src/mongo/db/server_feature_flags.idl
+++ b/src/mongo/db/server_feature_flags.idl
@@ -41,11 +41,6 @@ feature_flags:
require tenantID to be a part of NamespaceString and TenantDatabase.
cpp_varname: gFeatureFlagRequireTenantID
default: false
- featureFlagUserWriteBlocking:
- description: "Enable user write blocking for C2C replication"
- cpp_varname: gFeatureFlagUserWriteBlocking
- default: true
- version: "6.0"
featureFlagOptionalCfgSvr:
description: "Optional config server for small clusters"
cpp_varname: gFeatureFlagOptionalCfgSvr