diff options
author | Jordi Serra Torrens <jordi.serra-torrens@mongodb.com> | 2022-03-30 07:10:07 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-03-30 07:46:36 +0000 |
commit | 92ec20cd6fc72f85d68a8ecb5682d1a5a7a1500b (patch) | |
tree | ebaac21d8085dbfd7fb6c005d8aacba0f13df04a | |
parent | dca101cdb1370e25ebf1730a46467a820919c1d5 (diff) | |
download | mongo-92ec20cd6fc72f85d68a8ecb5682d1a5a7a1500b.tar.gz |
SERVER-65012 Avoid invariant when converting write-blocked shard to replicaSet
-rw-r--r-- | src/mongo/db/s/global_user_write_block_state.cpp | 1 | ||||
-rw-r--r-- | src/mongo/db/user_write_block_mode_op_observer.cpp | 4 |
2 files changed, 3 insertions, 2 deletions
diff --git a/src/mongo/db/s/global_user_write_block_state.cpp b/src/mongo/db/s/global_user_write_block_state.cpp index ec3dbf11f7e..af9adf72b3d 100644 --- a/src/mongo/db/s/global_user_write_block_state.cpp +++ b/src/mongo/db/s/global_user_write_block_state.cpp @@ -71,7 +71,6 @@ bool GlobalUserWriteBlockState::isUserWriteBlockingEnabled(OperationContext* opC } void GlobalUserWriteBlockState::enableUserShardedDDLBlocking(OperationContext* opCtx) { - invariant(serverGlobalParams.clusterRole == ClusterRole::ShardServer); _userShardedDDLBlocked.store(true); } diff --git a/src/mongo/db/user_write_block_mode_op_observer.cpp b/src/mongo/db/user_write_block_mode_op_observer.cpp index b58f48c623a..93a7fb2749c 100644 --- a/src/mongo/db/user_write_block_mode_op_observer.cpp +++ b/src/mongo/db/user_write_block_mode_op_observer.cpp @@ -177,7 +177,9 @@ void UserWriteBlockModeOpObserver::_onReplicationRollback(OperationContext* opCt void UserWriteBlockModeOpObserver::_checkWriteAllowed(OperationContext* opCtx, const NamespaceString& nss) { - if (isStandaloneOrPrimary(opCtx)) { + // Evaluate write blocking only on replica set primaries. + const auto replCoord = repl::ReplicationCoordinator::get(opCtx); + if (replCoord->isReplEnabled() && isStandaloneOrPrimary(opCtx)) { GlobalUserWriteBlockState::get(opCtx)->checkUserWritesAllowed(opCtx, nss); } } |