diff options
Diffstat (limited to 'src/mongo/db/transaction_api.cpp')
| -rw-r--r-- | src/mongo/db/transaction_api.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/mongo/db/transaction_api.cpp b/src/mongo/db/transaction_api.cpp index 6af7f5b402b..e0bc476ac8b 100644 --- a/src/mongo/db/transaction_api.cpp +++ b/src/mongo/db/transaction_api.cpp @@ -103,16 +103,10 @@ StatusWith<CommitResult> SyncTransactionWithRetries::runNoThrow(OperationContext return yieldStatus; } - auto txnFuture = _txn->run(std::move(callback)); - auto txnResult = txnFuture.getNoThrow(opCtx); - + auto txnResult = _txn->run(std::move(callback)).getNoThrow(opCtx); // Cancel the source to guarantee the transaction will terminate if our opCtx was interrupted. _source.cancel(); - // Wait for transaction to complete before returning so variables referenced by its callback are - // guaranteed to be in scope even if the API caller's opCtx was interrupted. - txnFuture.wait(); - // Post transaction processing, which must also happen inline. OperationTimeTracker::get(opCtx)->updateOperationTime(_txn->getOperationTime()); repl::ReplClientInfo::forClient(opCtx->getClient()) @@ -274,7 +268,7 @@ ExecutorFuture<void> TransactionWithRetries::_bestEffortAbort() { return _internalTxn->abort().thenRunOn(_executor).onError([this](Status abortStatus) { LOGV2(5875900, "Unable to abort internal transaction", - "reason"_attr = redact(abortStatus), + "reason"_attr = abortStatus, "txnInfo"_attr = _internalTxn->reportStateForLog()); }); } @@ -537,8 +531,8 @@ Transaction::ErrorHandlingStep Transaction::handleError(const StatusWith<CommitR LOGV2_DEBUG(5875905, 3, "Internal transaction handling error", - "error"_attr = swResult.isOK() ? redact(swResult.getValue().getEffectiveStatus()) - : redact(swResult.getStatus()), + "error"_attr = swResult.isOK() ? swResult.getValue().getEffectiveStatus() + : swResult.getStatus(), "hasTransientTransactionErrorLabel"_attr = _latestResponseHasTransientTransactionErrorLabel, "txnInfo"_attr = _reportStateForLog(lg), |
