summaryrefslogtreecommitdiff
path: root/src/mongo/db/catalog/collection_validation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/catalog/collection_validation.cpp')
-rw-r--r--src/mongo/db/catalog/collection_validation.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mongo/db/catalog/collection_validation.cpp b/src/mongo/db/catalog/collection_validation.cpp
index f47813abef7..241f9fe4f05 100644
--- a/src/mongo/db/catalog/collection_validation.cpp
+++ b/src/mongo/db/catalog/collection_validation.cpp
@@ -220,7 +220,7 @@ void _gatherIndexEntryErrors(OperationContext* opCtx,
<< " extra index entries.");
}
- if (validateState->shouldRunRepair()) {
+ if (validateState->fixErrors()) {
indexConsistency->repairMissingIndexEntries(opCtx, result);
}
@@ -460,15 +460,17 @@ Status validate(OperationContext* opCtx,
opCtx->recoveryUnit()->abandonSnapshot();
opCtx->recoveryUnit()->setPrepareConflictBehavior(oldPrepareConflictBehavior);
});
- if (validateState.shouldRunRepair()) {
+ if (validateState.fixErrors()) {
// Note: cannot set PrepareConflictBehavior here, since the validate command with repair
// needs kIngnoreConflictsAllowWrites, but validate repair at startup cannot set that here
// due to an already active WriteUnitOfWork. The prepare conflict behavior for validate
// command with repair is set in the command code prior to this point.
invariant(!validateState.isBackground());
} else if (!validateState.isBackground()) {
+ // Foreground validation may perform writes to fix up inconsistencies that are not
+ // correctness errors.
opCtx->recoveryUnit()->setPrepareConflictBehavior(
- PrepareConflictBehavior::kIgnoreConflicts);
+ PrepareConflictBehavior::kIgnoreConflictsAllowWrites);
} else {
// isBackground().
invariant(oldPrepareConflictBehavior == PrepareConflictBehavior::kEnforce);