diff options
author | Jordi Serra Torrens <jordi.serra-torrens@mongodb.com> | 2022-03-22 08:53:33 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-03-22 09:22:17 +0000 |
commit | 1c4e5ba241829145026f8aa0db70707f15fbe7b3 (patch) | |
tree | fb4b52d0b4ef860f58a5e3a7f205e40520b7f59b /src/mongo/db/s/user_writes_recoverable_critical_section_service.cpp | |
parent | 14eb8da788f85dd6d702da95ef450e8c2a6ac68b (diff) | |
download | mongo-1c4e5ba241829145026f8aa0db70707f15fbe7b3.tar.gz |
SERVER-63621 Push user write blocking state onto newly added shards in the addShard procedure
Diffstat (limited to 'src/mongo/db/s/user_writes_recoverable_critical_section_service.cpp')
-rw-r--r-- | src/mongo/db/s/user_writes_recoverable_critical_section_service.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/mongo/db/s/user_writes_recoverable_critical_section_service.cpp b/src/mongo/db/s/user_writes_recoverable_critical_section_service.cpp index 2a0635591b1..e54abafe898 100644 --- a/src/mongo/db/s/user_writes_recoverable_critical_section_service.cpp +++ b/src/mongo/db/s/user_writes_recoverable_critical_section_service.cpp @@ -36,8 +36,8 @@ #include "mongo/db/db_raii.h" #include "mongo/db/dbdirectclient.h" #include "mongo/db/persistent_task_store.h" +#include "mongo/db/repl/replication_coordinator.h" #include "mongo/db/s/global_user_write_block_state.h" -#include "mongo/db/s/sharding_ddl_coordinator_service.h" #include "mongo/db/s/user_writes_critical_section_document_gen.h" #include "mongo/logv2/log.h" #include "mongo/s/catalog/sharding_catalog_client.h" @@ -59,6 +59,8 @@ bool inRecoveryMode(OperationContext* opCtx) { } // namespace user_writes_recoverable_critical_section_util namespace { +MONGO_FAIL_POINT_DEFINE(skipRecoverUserWriteCriticalSections); + const auto serviceDecorator = ServiceContext::declareDecoration<UserWritesRecoverableCriticalSectionService>(); @@ -192,11 +194,6 @@ void UserWritesRecoverableCriticalSectionService:: // Take the user writes critical section blocking only ShardingDDLCoordinators. acquireRecoverableCriticalSection( opCtx, nss, true /* blockShardedDDL */, false /* blockUserWrites */); - - // Wait for ongoing ShardingDDLCoordinators to finish. This ensures that all coordinators that - // started before enabling blocking have finish, and that any new coordinator that is started - // after this point will see the blocking is enabled. - ShardingDDLCoordinatorService::getService(opCtx)->waitForOngoingCoordinatorsToFinish(opCtx); } void UserWritesRecoverableCriticalSectionService:: @@ -351,6 +348,10 @@ void UserWritesRecoverableCriticalSectionService::releaseRecoverableCriticalSect void UserWritesRecoverableCriticalSectionService::recoverRecoverableCriticalSections( OperationContext* opCtx) { + if (MONGO_unlikely(skipRecoverUserWriteCriticalSections.shouldFail())) { + return; + } + LOGV2_DEBUG(6351912, 2, "Recovering all user writes recoverable critical sections"); GlobalUserWriteBlockState::get(opCtx)->disableUserShardedDDLBlocking(opCtx); |