summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/user_writes_recoverable_critical_section_service.cpp
diff options
context:
space:
mode:
authorJordi Serra Torrens <jordi.serra-torrens@mongodb.com>2022-03-22 08:53:33 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-03-22 09:22:17 +0000
commit1c4e5ba241829145026f8aa0db70707f15fbe7b3 (patch)
treefb4b52d0b4ef860f58a5e3a7f205e40520b7f59b /src/mongo/db/s/user_writes_recoverable_critical_section_service.cpp
parent14eb8da788f85dd6d702da95ef450e8c2a6ac68b (diff)
downloadmongo-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.cpp13
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);