summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Russotto <matthew.russotto@mongodb.com>2022-12-16 14:53:04 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-02-15 22:32:30 +0000
commit4475cca84dae9dbbcebf8a0ba1822f658b7643e8 (patch)
tree46aafe3cc1419c99f7a44ef0631328a31e04c4e4
parentd0b1e392cca66b2c5b399b0d3fe5a65f1068cd33 (diff)
downloadmongo-4475cca84dae9dbbcebf8a0ba1822f658b7643e8.tar.gz
SERVER-72194 oplog_rollover.js should wait for the durable timestamp to advance
(cherry picked from commit ff4d30d09eca7c3e068b815b223bddbf78d4cd09)
-rw-r--r--jstests/replsets/libs/oplog_rollover_test.js34
1 files changed, 22 insertions, 12 deletions
diff --git a/jstests/replsets/libs/oplog_rollover_test.js b/jstests/replsets/libs/oplog_rollover_test.js
index 94f8211ca76..63439f2849f 100644
--- a/jstests/replsets/libs/oplog_rollover_test.js
+++ b/jstests/replsets/libs/oplog_rollover_test.js
@@ -96,18 +96,28 @@ function oplogRolloverTest(storageEngine, initialSyncMethod) {
const awaitCheckpointer = function(timestamp) {
assert.soon(
() => {
- const primaryTimestamp =
- assert.commandWorked(primary.adminCommand({replSetGetStatus: 1}))
- .lastStableRecoveryTimestamp;
- const secondaryTimestamp =
- assert.commandWorked(secondary.adminCommand({replSetGetStatus: 1}))
- .lastStableRecoveryTimestamp;
- jsTestLog("Awaiting last stable recovery timestamp " +
- `(primary: ${tojson(primaryTimestamp)}, secondary: ${
- tojson(secondaryTimestamp)}) ` +
- `target: ${tojson(timestamp)}`);
- return ((timestampCmp(primaryTimestamp, timestamp) >= 0) &&
- (timestampCmp(secondaryTimestamp, timestamp) >= 0));
+ const primaryReplSetStatus =
+ assert.commandWorked(primary.adminCommand({replSetGetStatus: 1}));
+ const primaryRecoveryTimestamp =
+ primaryReplSetStatus.lastStableRecoveryTimestamp;
+ const primaryDurableTimestamp = primaryReplSetStatus.optimes.durableOpTime.ts;
+ const secondaryReplSetStatus =
+ assert.commandWorked(secondary.adminCommand({replSetGetStatus: 1}));
+ const secondaryRecoveryTimestamp =
+ secondaryReplSetStatus.lastStableRecoveryTimestamp;
+ const secondaryDurableTimestamp =
+ secondaryReplSetStatus.optimes.durableOpTime.ts;
+ jsTestLog(
+ "Awaiting durable & last stable recovery timestamp " +
+ `(primary last stable recovery: ${tojson(primaryRecoveryTimestamp)}, ` +
+ `primary durable: ${tojson(primaryDurableTimestamp)}, ` +
+ `secondary last stable recovery: ${tojson(secondaryRecoveryTimestamp)}, ` +
+ `secondary durable: ${tojson(secondaryDurableTimestamp)}) ` +
+ `target: ${tojson(timestamp)}`);
+ return ((timestampCmp(primaryRecoveryTimestamp, timestamp) >= 0) &&
+ (timestampCmp(primaryDurableTimestamp, timestamp) >= 0) &&
+ (timestampCmp(secondaryDurableTimestamp, timestamp) >= 0) &&
+ (timestampCmp(secondaryRecoveryTimestamp, timestamp) >= 0));
},
"Timeout waiting for checkpointing to catch up",
ReplSetTest.kDefaultTimeoutMS,