diff options
author | Matthew Russotto <matthew.russotto@mongodb.com> | 2022-12-16 14:53:04 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-02-15 22:32:30 +0000 |
commit | 4475cca84dae9dbbcebf8a0ba1822f658b7643e8 (patch) | |
tree | 46aafe3cc1419c99f7a44ef0631328a31e04c4e4 | |
parent | d0b1e392cca66b2c5b399b0d3fe5a65f1068cd33 (diff) | |
download | mongo-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.js | 34 |
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, |