summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLingzhi Deng <lingzhi.deng@mongodb.com>2020-05-08 14:26:53 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-05-11 14:00:26 +0000
commitf2aa1ffe05804aa3cc21ad5f980bca998dde09f3 (patch)
treea690f8ebde6c8f24238403f4e24b343afaaae751
parent42acb126b4609f20c559d80debd0e9d2db9cff44 (diff)
downloadmongo-f2aa1ffe05804aa3cc21ad5f980bca998dde09f3.tar.gz
SERVER-48046: {replSetFreeze: 0} done in RollbackTest.restartNode() should be resilient of network errors
-rw-r--r--jstests/replsets/libs/rollback_test.js15
1 files changed, 13 insertions, 2 deletions
diff --git a/jstests/replsets/libs/rollback_test.js b/jstests/replsets/libs/rollback_test.js
index d37f8d1f691..d8f5163e8c4 100644
--- a/jstests/replsets/libs/rollback_test.js
+++ b/jstests/replsets/libs/rollback_test.js
@@ -597,8 +597,19 @@ function RollbackTest(name = "RollbackTest", replSet) {
// because we have configured the replica set with high electionTimeoutMillis.
assert.eq(newPrimary, curPrimary, "Did not elect the same node as primary");
- // Unfreeze the current secondary so that it can step up again.
- assert.commandWorked(curSecondary.adminCommand({replSetFreeze: 0}));
+ // Unfreeze the current secondary so that it can step up again. Retry on network errors
+ // in case the current secondary is in ROLLBACK state.
+ assert.soon(() => {
+ try {
+ assert.commandWorked(curSecondary.adminCommand({replSetFreeze: 0}));
+ return true;
+ } catch (e) {
+ if (isNetworkError(e)) {
+ return false;
+ }
+ throw e;
+ }
+ }, `Failed to unfreeze current secondary ${curSecondary.host}`);
}
curSecondary = rst.getSecondary();