diff options
Diffstat (limited to 'jstests/replsets/restore_term.js')
-rw-r--r-- | jstests/replsets/restore_term.js | 96 |
1 files changed, 48 insertions, 48 deletions
diff --git a/jstests/replsets/restore_term.js b/jstests/replsets/restore_term.js index 05c03a2dfee..072a22eb974 100644 --- a/jstests/replsets/restore_term.js +++ b/jstests/replsets/restore_term.js @@ -10,52 +10,52 @@ load("jstests/replsets/rslib.js"); // storage engines. // @tags: [requires_persistence] (function() { - "use strict"; - - function getCurrentTerm(primary) { - var res = primary.adminCommand({replSetGetStatus: 1}); - assert.commandWorked(res); - return res.term; - } - - var name = "restore_term"; - var rst = new ReplSetTest({name: name, nodes: 2}); - - rst.startSet(); - rst.initiate(); - rst.awaitSecondaryNodes(); - - var primary = rst.getPrimary(); - var primaryColl = primary.getDB("test").coll; - - // Current term may be greater than 1 if election race happens. - var firstSuccessfulTerm = getCurrentTerm(primary); - assert.gte(firstSuccessfulTerm, 1); - assert.writeOK(primaryColl.insert({x: 1}, {writeConcern: {w: "majority"}})); - assert.eq(getCurrentTerm(primary), firstSuccessfulTerm); - - // Check that the insert op has the initial term. - var latestOp = getLatestOp(primary); - assert.eq(latestOp.op, "i"); - assert.eq(latestOp.t, firstSuccessfulTerm); - - // Step down to increase the term. - assert.commandWorked(primary.adminCommand({replSetStepDown: 0})); - - rst.awaitSecondaryNodes(); - // The secondary became the new primary now with a higher term. - // Since there's only one secondary who may run for election, the new term is higher by 1. - assert.eq(getCurrentTerm(rst.getPrimary()), firstSuccessfulTerm + 1); - - // Restart the replset and verify the term is the same. - rst.stopSet(null /* signal */, true /* forRestart */); - rst.startSet({restart: true}); - rst.awaitSecondaryNodes(); - primary = rst.getPrimary(); - - assert.eq(primary.getDB("test").coll.find().itcount(), 1); - // After restart, the new primary stands up with the newer term. - assert.gte(getCurrentTerm(primary), firstSuccessfulTerm + 1); - - rst.stopSet(); +"use strict"; + +function getCurrentTerm(primary) { + var res = primary.adminCommand({replSetGetStatus: 1}); + assert.commandWorked(res); + return res.term; +} + +var name = "restore_term"; +var rst = new ReplSetTest({name: name, nodes: 2}); + +rst.startSet(); +rst.initiate(); +rst.awaitSecondaryNodes(); + +var primary = rst.getPrimary(); +var primaryColl = primary.getDB("test").coll; + +// Current term may be greater than 1 if election race happens. +var firstSuccessfulTerm = getCurrentTerm(primary); +assert.gte(firstSuccessfulTerm, 1); +assert.writeOK(primaryColl.insert({x: 1}, {writeConcern: {w: "majority"}})); +assert.eq(getCurrentTerm(primary), firstSuccessfulTerm); + +// Check that the insert op has the initial term. +var latestOp = getLatestOp(primary); +assert.eq(latestOp.op, "i"); +assert.eq(latestOp.t, firstSuccessfulTerm); + +// Step down to increase the term. +assert.commandWorked(primary.adminCommand({replSetStepDown: 0})); + +rst.awaitSecondaryNodes(); +// The secondary became the new primary now with a higher term. +// Since there's only one secondary who may run for election, the new term is higher by 1. +assert.eq(getCurrentTerm(rst.getPrimary()), firstSuccessfulTerm + 1); + +// Restart the replset and verify the term is the same. +rst.stopSet(null /* signal */, true /* forRestart */); +rst.startSet({restart: true}); +rst.awaitSecondaryNodes(); +primary = rst.getPrimary(); + +assert.eq(primary.getDB("test").coll.find().itcount(), 1); +// After restart, the new primary stands up with the newer term. +assert.gte(getCurrentTerm(primary), firstSuccessfulTerm + 1); + +rst.stopSet(); })(); |