Currently when the ilm rollup step is being retried the same target index is being used. This can cause the subsequent downsample api invocation to index rolled up data into shards of the target index that already exists and while the previous downsample api invocation is still partially running (and also rolling up data into the same target shard).

Note that, the rollup step may fail in case a cluster is being restarted in a rolling manner (for example for an upgrade) or when the elected master node fails (the downsample action is coordinated from the elected master node).

The fix would be that the `RollupStep` isn't retried on its own incase it fails to execute, but that the step that generates the target index name for downsampling is retried first and then the rollup step.

server/src/main/java/org/elasticsearch/cluster/metadata/LifecycleExecutionState.java
Long lifecycleDate,
    Long phaseTime,
    Long actionTime,
    Long stepTime,
    String snapshotRepository,
    String snapshotName,
    String shrinkIndexName,
    String snapshotIndexName,
    String downsampleIndexName
) {
    public static final String ILM_CUSTOM_METADATA_KEY = "ilm";
    private static final String PHASE = "phase";
    private static final String ACTION = "action";
    private static final String STEP = "step";
    private static final String INDEX_CREATION_DATE = "creation_date";
    private static final String PHASE_TIME = "phase_time";
    private static final String ACTION_TIME = "action_time";
    private static final String STEP_TIME = "step_time";
    private static final String FAILED_STEP = "failed_step";
    private static final String IS_AUTO_RETRYABLE_ERROR = "is_auto_retryable_error";
    private static final String FAILED_STEP_RETRY_COUNT = "failed_step_retry_count";
    private static final String STEP_INFO = "step_info";
    private static final String PHASE_DEFINITION = "phase_definition";
    private static final String SNAPSHOT_NAME = "snapshot_name";
    private static final String SNAPSHOT_REPOSITORY = "snapshot_repository";
    private static final String SNAPSHOT_INDEX_NAME = "snapshot_index_name";
    private static final String SHRINK_INDEX_NAME = "shrink_index_name";
    private static final String DOWNSAMPLE_INDEX_NAME = "rollup_index_name";
    public static final LifecycleExecutionState EMPTY_STATE = LifecycleExecutionState.builder().build();
    public static Builder builder() {