-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: 3.4.19, 3.6.10
-
Component/s: Replication
-
None
-
Fully Compatible
-
ALL
-
v3.4
-
Repl 2019-03-11
-
10
double_rollback.js waits for node 0 to roll back using the following checks:
jsTestLog("Wait for nodes 0 to roll back and both node 0 and 2 to catch up to node 1");
waitForState(nodes[0], ReplSetTest.State.SECONDARY);
waitForState(nodes[2], ReplSetTest.State.SECONDARY);
rst.awaitReplication();
However, these checks are not reliable on 3.4 and 3.6. The first check can succeed because node 0 was in state SECONDARY prior to entering rollback. The awaitReplication() only checks liveNodes on 3.4 and 3.6, which may not include node 0 if the last call to isMaster failed due to the node closing connections when entering rollback. We require a more reliable way to wait for node 0 to complete rollback.