summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zhang <jason.zhang@mongodb.com>2022-06-22 01:21:36 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-06-22 01:56:16 +0000
commitfdf1e87a30e8c879080839573700ceed42ab1db4 (patch)
treec3b8afd5c369bba592548f05d6607a123b5cf2df
parent3415ba571e7bf99bcb1621f037249a8f4d8a1cc6 (diff)
downloadmongo-fdf1e87a30e8c879080839573700ceed42ab1db4.tar.gz
SERVER-67422 Have getAllRemovalFuturesForCoordinatorsForInternalTransactions wait for TransactionCoordinator catalog recovery
-rw-r--r--src/mongo/db/s/transaction_coordinator_service.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mongo/db/s/transaction_coordinator_service.cpp b/src/mongo/db/s/transaction_coordinator_service.cpp
index 41b758cffec..c317922c251 100644
--- a/src/mongo/db/s/transaction_coordinator_service.cpp
+++ b/src/mongo/db/s/transaction_coordinator_service.cpp
@@ -379,6 +379,10 @@ TransactionCoordinatorService::getAllRemovalFuturesForCoordinatorsForInternalTra
std::shared_ptr<CatalogAndScheduler> cas = _getCatalogAndScheduler(opCtx);
auto& catalog = cas->catalog;
+ // On step up, we want to wait until the catalog has recovered all active transaction
+ // coordinators before getting the removal futures.
+ cas->recoveryTaskCompleted->get(opCtx);
+
auto predicate = [](const LogicalSessionId lsid,
const TxnNumberAndRetryCounter txnNumberAndRetryCounter,
const std::shared_ptr<TransactionCoordinator> transactionCoordinator) {