summaryrefslogtreecommitdiff
path: root/jstests/replsets/rollback_index_build_start.js
blob: b155febf423bf6747a21eac05485783108c00594 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
 * Test that an index build aborted due to rollback restarts correctly, even if the none of the
 * associated oplog entries are rolled-back.
 */
(function() {
"use strict";

// For RollbackIndexBuildsTest
load('jstests/replsets/libs/rollback_index_builds_test.js');

const rollbackIndexTest = new RollbackIndexBuildsTest([ErrorCodes.InterruptedDueToReplStateChange]);

const schedule = [
    // Start an index build.
    "start",
    // Hold the stable timestamp, if applicable. This will prevent the startIndexBuild oplog entry
    // from being rolled-back.
    "holdStableTimestamp",
    // This aborts the active index build.
    "transitionToRollback",
    // Allow the new primary to take over, and let the rolled-back primary restart its index build.
    "transitionToSteadyState",
    // If failover is supported, the new index build will already commit on the new primary. Allow
    // the old primary to finish.
    "commit",
];

rollbackIndexTest.runSchedules([schedule]);
rollbackIndexTest.stop();
})();