diff options
Diffstat (limited to 'src/mongo/db/repl/tenant_migration_recipient_service.cpp')
-rw-r--r-- | src/mongo/db/repl/tenant_migration_recipient_service.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/mongo/db/repl/tenant_migration_recipient_service.cpp b/src/mongo/db/repl/tenant_migration_recipient_service.cpp index 30c98b48af7..19f8a191489 100644 --- a/src/mongo/db/repl/tenant_migration_recipient_service.cpp +++ b/src/mongo/db/repl/tenant_migration_recipient_service.cpp @@ -525,14 +525,23 @@ TenantMigrationRecipientService::Instance::waitUntilMigrationReachesReturnAfterR opCtx, returnAfterReachingTimestamp, donorRecipientOpTimePair.recipientOpTime)); } _stopOrHangOnFailPoint(&fpBeforePersistingRejectReadsBeforeTimestamp, opCtx); - uassertStatusOK(tenantMigrationRecipientEntryHelpers::updateStateDoc(opCtx, _stateDoc)); - auto writeOpTime = repl::ReplClientInfo::forClient(opCtx->getClient()).getLastOp(); + auto lastOpBeforeUpdate = repl::ReplClientInfo::forClient(opCtx->getClient()).getLastOp(); + uassertStatusOK(tenantMigrationRecipientEntryHelpers::updateStateDoc(opCtx, _stateDoc)); + auto lastOpAfterUpdate = repl::ReplClientInfo::forClient(opCtx->getClient()).getLastOp(); auto replCoord = repl::ReplicationCoordinator::get(_serviceContext); + if (lastOpBeforeUpdate == lastOpAfterUpdate) { + // updateStateDoc was a no-op, but we still must ensure it's all-replicated. + lastOpAfterUpdate = uassertStatusOK(replCoord->getLatestWriteOpTime(opCtx)); + LOGV2(6096900, + "Fixed write timestamp for recording rejectReadsBeforeTimestamp", + "newWriteOpTime"_attr = lastOpAfterUpdate); + } + WriteConcernOptions writeConcern(repl::ReplSetConfig::kConfigAllWriteConcernName, WriteConcernOptions::SyncMode::NONE, opCtx->getWriteConcern().wTimeout); - uassertStatusOK(replCoord->awaitReplication(opCtx, writeOpTime, writeConcern).status); + uassertStatusOK(replCoord->awaitReplication(opCtx, lastOpAfterUpdate, writeConcern).status); _stopOrHangOnFailPoint(&fpAfterWaitForRejectReadsBeforeTimestamp, opCtx); |