summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/rs_rollback.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/rs_rollback.cpp')
-rw-r--r--src/mongo/db/repl/rs_rollback.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/mongo/db/repl/rs_rollback.cpp b/src/mongo/db/repl/rs_rollback.cpp
index d52032cb6a4..7b40e510127 100644
--- a/src/mongo/db/repl/rs_rollback.cpp
+++ b/src/mongo/db/repl/rs_rollback.cpp
@@ -159,7 +159,7 @@ struct FixUpInfo {
set<string> collectionsToResyncData;
set<string> collectionsToResyncMetadata;
- Timestamp commonPoint;
+ OpTime commonPoint;
RecordId commonPointOurDiskloc;
int rbid; // remote server's current rollback sequence #
@@ -391,9 +391,12 @@ void syncFixUp(OperationContext* txn,
// we have items we are writing that aren't from a point-in-time. thus best not to come
// online until we get to that point in freshness.
+ // TODO this is still wrong because we don't record that we are in rollback, and we can't really
+ // recover.
OpTime minValid = fassertStatusOK(28774, OpTime::parseFromOplogEntry(newMinValid));
log() << "minvalid=" << minValid;
- setMinValid(txn, {OpTime{}, minValid});
+ setAppliedThrough(txn, {}); // Use top of oplog.
+ setMinValid(txn, minValid);
// any full collection resyncs required?
if (!fixUpInfo.collectionsToResyncData.empty() ||
@@ -497,8 +500,8 @@ void syncFixUp(OperationContext* txn,
} else {
OpTime minValid = fassertStatusOK(28775, OpTime::parseFromOplogEntry(newMinValid));
log() << "minvalid=" << minValid;
- const OpTime start{fixUpInfo.commonPoint, OpTime::kUninitializedTerm};
- setMinValid(txn, {start, minValid});
+ setMinValid(txn, minValid);
+ setAppliedThrough(txn, fixUpInfo.commonPoint);
}
} catch (const DBException& e) {
err = "can't get/set minvalid: ";
@@ -768,7 +771,7 @@ void syncFixUp(OperationContext* txn,
log() << "rollback 6";
// clean up oplog
- LOG(2) << "rollback truncate oplog after " << fixUpInfo.commonPoint.toStringPretty();
+ LOG(2) << "rollback truncate oplog after " << fixUpInfo.commonPoint;
{
const NamespaceString oplogNss(rsOplogName);
ScopedTransaction transaction(txn, MODE_IX);