/**
 * 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();
})();
