Skip to content

Commit d497d90

Browse files
talevyjasontedor
authored andcommitted
inherit [index.lifecycle.date] from rolled-over time (#30853)
Indices that are rolled over preserve their origin index.lifecycle.date as the time the index was created. Although this is also fine, it would make more sense to start the timer for moving to the warm phase from the time it was rolled over so that we capture the time elapsed from the latest data, as opposed to when the index was created. This commit adds an extra step within the RolloverAction that extracts the index.creation_date of the newly created index from the RolloverStep and sets that as the index.lifecycle.date of the rolled-over index that is waiting for its next phase.
1 parent 959a289 commit d497d90

File tree

11 files changed

+211
-29
lines changed

11 files changed

+211
-29
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
package org.elasticsearch.xpack.core.indexlifecycle;
7+
8+
import org.elasticsearch.cluster.ClusterState;
9+
import org.elasticsearch.index.Index;
10+
11+
public abstract class ClusterStateActionStep extends Step {
12+
13+
public ClusterStateActionStep(StepKey key, StepKey nextStepKey) {
14+
super(key, nextStepKey);
15+
}
16+
17+
public abstract ClusterState performAction(Index index, ClusterState clusterState);
18+
}

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/indexlifecycle/InitializePolicyContextStep.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@
1111
import org.elasticsearch.common.settings.Settings;
1212
import org.elasticsearch.index.Index;
1313

14-
public class InitializePolicyContextStep extends Step {
14+
public final class InitializePolicyContextStep extends ClusterStateActionStep {
1515
public static final StepKey KEY = new StepKey("pre-phase", "pre-action", "init");
1616

1717
public InitializePolicyContextStep(Step.StepKey key, StepKey nextStepKey) {
1818
super(key, nextStepKey);
1919
}
2020

21+
@Override
2122
public ClusterState performAction(Index index, ClusterState clusterState) {
2223
Settings settings = clusterState.metaData().index(index).getSettings();
2324
if (settings.hasValue(LifecycleSettings.LIFECYCLE_INDEX_CREATION_DATE)) {

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/indexlifecycle/RolloverAction.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.elasticsearch.xpack.core.indexlifecycle.Step.StepKey;
2121

2222
import java.io.IOException;
23-
import java.util.Collections;
23+
import java.util.Arrays;
2424
import java.util.List;
2525
import java.util.Objects;
2626

@@ -104,7 +104,7 @@ public ByteSizeValue getMaxSize() {
104104
public TimeValue getMaxAge() {
105105
return maxAge;
106106
}
107-
107+
108108
public Long getMaxDocs() {
109109
return maxDocs;
110110
}
@@ -127,8 +127,11 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
127127

128128
@Override
129129
public List<Step> toSteps(Client client, String phase, Step.StepKey nextStepKey) {
130-
return Collections.singletonList(
131-
new RolloverStep(new StepKey(phase, NAME, RolloverStep.NAME), nextStepKey, client, maxSize, maxAge, maxDocs));
130+
StepKey updateDateStepKey = new StepKey(phase, NAME, UpdateRolloverLifecycleDateStep.NAME);
131+
RolloverStep rolloverStep = new RolloverStep(new StepKey(phase, NAME, RolloverStep.NAME), updateDateStepKey, client,
132+
maxSize, maxAge, maxDocs);
133+
UpdateRolloverLifecycleDateStep updateDateStep = new UpdateRolloverLifecycleDateStep(updateDateStepKey, nextStepKey);
134+
return Arrays.asList(rolloverStep, updateDateStep);
132135
}
133136

134137
@Override
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
package org.elasticsearch.xpack.core.indexlifecycle;
7+
8+
import org.elasticsearch.action.admin.indices.rollover.RolloverInfo;
9+
import org.elasticsearch.cluster.ClusterState;
10+
import org.elasticsearch.cluster.metadata.IndexMetaData;
11+
import org.elasticsearch.cluster.metadata.MetaData;
12+
import org.elasticsearch.common.Strings;
13+
import org.elasticsearch.common.settings.Settings;
14+
import org.elasticsearch.index.Index;
15+
16+
public class UpdateRolloverLifecycleDateStep extends ClusterStateActionStep {
17+
public static final String NAME = "update-rollover-lifecycle-date";
18+
19+
public UpdateRolloverLifecycleDateStep(StepKey key, StepKey nextStepKey) {
20+
super(key, nextStepKey);
21+
}
22+
23+
@Override
24+
public ClusterState performAction(Index index, ClusterState currentState) {
25+
IndexMetaData indexMetaData = currentState.metaData().getIndexSafe(index);
26+
// find the newly created index from the rollover and fetch its index.creation_date
27+
String rolloverAlias = RolloverAction.LIFECYCLE_ROLLOVER_ALIAS_SETTING.get(indexMetaData.getSettings());
28+
if (Strings.isNullOrEmpty(rolloverAlias)) {
29+
throw new IllegalStateException("setting [" + RolloverAction.LIFECYCLE_ROLLOVER_ALIAS
30+
+ "] is not set on index [" + indexMetaData.getIndex().getName() + "]");
31+
}
32+
RolloverInfo rolloverInfo = indexMetaData.getRolloverInfos().get(rolloverAlias);
33+
if (rolloverInfo == null) {
34+
throw new IllegalStateException("index [" + indexMetaData.getIndex().getName() + "] has not rolled over yet");
35+
}
36+
Settings settings = Settings.builder().put(LifecycleSettings.LIFECYCLE_INDEX_CREATION_DATE, rolloverInfo.getTime()).build();
37+
return ClusterState.builder(currentState).metaData(MetaData.builder(currentState.metaData())
38+
.updateSettings(settings, indexMetaData.getIndex().getName())).build();
39+
}
40+
41+
@Override
42+
public int hashCode() {
43+
return super.hashCode();
44+
}
45+
46+
@Override
47+
public boolean equals(Object obj) {
48+
return obj != null && getClass() == obj.getClass() && super.equals(obj);
49+
}
50+
}

x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/indexlifecycle/RolloverActionTests.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,17 @@ public void testToSteps() {
7676
randomAlphaOfLengthBetween(1, 10));
7777
List<Step> steps = action.toSteps(null, phase, nextStepKey);
7878
assertNotNull(steps);
79-
assertEquals(1, steps.size());
79+
assertEquals(2, steps.size());
8080
StepKey expectedFirstStepKey = new StepKey(phase, RolloverAction.NAME, RolloverStep.NAME);
81+
StepKey expectedSecondStepKey = new StepKey(phase, RolloverAction.NAME, UpdateRolloverLifecycleDateStep.NAME);
8182
RolloverStep firstStep = (RolloverStep) steps.get(0);
83+
UpdateRolloverLifecycleDateStep secondStep = (UpdateRolloverLifecycleDateStep) steps.get(1);
8284
assertEquals(expectedFirstStepKey, firstStep.getKey());
83-
assertEquals(nextStepKey, firstStep.getNextStepKey());
85+
assertEquals(expectedSecondStepKey, secondStep.getKey());
86+
assertEquals(secondStep.getKey(), firstStep.getNextStepKey());
8487
assertEquals(action.getMaxSize(), firstStep.getMaxSize());
8588
assertEquals(action.getMaxAge(), firstStep.getMaxAge());
8689
assertEquals(action.getMaxDocs(), firstStep.getMaxDocs());
90+
assertEquals(nextStepKey, secondStep.getNextStepKey());
8791
}
8892
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
package org.elasticsearch.xpack.core.indexlifecycle;
7+
8+
9+
import org.elasticsearch.Version;
10+
import org.elasticsearch.action.admin.indices.rollover.RolloverInfo;
11+
import org.elasticsearch.cluster.ClusterName;
12+
import org.elasticsearch.cluster.ClusterState;
13+
import org.elasticsearch.cluster.metadata.AliasMetaData;
14+
import org.elasticsearch.cluster.metadata.IndexMetaData;
15+
import org.elasticsearch.cluster.metadata.MetaData;
16+
import org.elasticsearch.xpack.core.indexlifecycle.Step.StepKey;
17+
18+
import java.util.Collections;
19+
20+
import static org.hamcrest.Matchers.equalTo;
21+
22+
public class UpdateRolloverLifecycleDateStepTests extends AbstractStepTestCase<UpdateRolloverLifecycleDateStep> {
23+
24+
@Override
25+
public UpdateRolloverLifecycleDateStep createRandomInstance() {
26+
StepKey stepKey = randomStepKey();
27+
StepKey nextStepKey = randomStepKey();
28+
return new UpdateRolloverLifecycleDateStep(stepKey, nextStepKey);
29+
}
30+
31+
@Override
32+
public UpdateRolloverLifecycleDateStep mutateInstance(UpdateRolloverLifecycleDateStep instance) {
33+
StepKey key = instance.getKey();
34+
StepKey nextKey = instance.getNextStepKey();
35+
36+
if (randomBoolean()) {
37+
key = new StepKey(key.getPhase(), key.getAction(), key.getName() + randomAlphaOfLength(5));
38+
} else {
39+
nextKey = new StepKey(key.getPhase(), key.getAction(), key.getName() + randomAlphaOfLength(5));
40+
}
41+
42+
return new UpdateRolloverLifecycleDateStep(key, nextKey);
43+
}
44+
45+
@Override
46+
public UpdateRolloverLifecycleDateStep copyInstance(UpdateRolloverLifecycleDateStep instance) {
47+
return new UpdateRolloverLifecycleDateStep(instance.getKey(), instance.getNextStepKey());
48+
}
49+
50+
@SuppressWarnings("unchecked")
51+
public void testPerformAction() {
52+
String alias = randomAlphaOfLength(3);
53+
long creationDate = randomLongBetween(0, 1000000);
54+
long rolloverTime = randomValueOtherThan(creationDate, () -> randomNonNegativeLong());
55+
IndexMetaData newIndexMetaData = IndexMetaData.builder(randomAlphaOfLength(11))
56+
.settings(settings(Version.CURRENT)).creationDate(creationDate)
57+
.putAlias(AliasMetaData.builder(alias)).numberOfShards(randomIntBetween(1, 5))
58+
.numberOfReplicas(randomIntBetween(0, 5)).build();
59+
IndexMetaData indexMetaData = IndexMetaData.builder(randomAlphaOfLength(10))
60+
.putRolloverInfo(new RolloverInfo(alias, Collections.emptyList(), rolloverTime))
61+
.settings(settings(Version.CURRENT).put(RolloverAction.LIFECYCLE_ROLLOVER_ALIAS, alias))
62+
.numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build();
63+
ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT)
64+
.metaData(MetaData.builder()
65+
.put(indexMetaData, false)
66+
.put(newIndexMetaData, false)).build();
67+
68+
UpdateRolloverLifecycleDateStep step = createRandomInstance();
69+
ClusterState newState = step.performAction(indexMetaData.getIndex(), clusterState);
70+
long actualRolloverTime = LifecycleSettings.LIFECYCLE_INDEX_CREATION_DATE_SETTING
71+
.get(newState.metaData().index(indexMetaData.getIndex()).getSettings());
72+
assertThat(actualRolloverTime, equalTo(rolloverTime));
73+
}
74+
75+
public void testPerformActionBeforeRolloverHappened() {
76+
String alias = randomAlphaOfLength(3);
77+
long creationDate = randomLongBetween(0, 1000000);
78+
IndexMetaData indexMetaData = IndexMetaData.builder(randomAlphaOfLength(11))
79+
.settings(settings(Version.CURRENT).put(RolloverAction.LIFECYCLE_ROLLOVER_ALIAS, alias))
80+
.creationDate(creationDate).putAlias(AliasMetaData.builder(alias)).numberOfShards(randomIntBetween(1, 5))
81+
.numberOfReplicas(randomIntBetween(0, 5)).build();
82+
ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT)
83+
.metaData(MetaData.builder().put(indexMetaData, false)).build();
84+
UpdateRolloverLifecycleDateStep step = createRandomInstance();
85+
86+
IllegalStateException exceptionThrown = expectThrows(IllegalStateException.class,
87+
() -> step.performAction(indexMetaData.getIndex(), clusterState));
88+
assertThat(exceptionThrown.getMessage(),
89+
equalTo("index [" + indexMetaData.getIndex().getName() + "] has not rolled over yet"));
90+
}
91+
92+
public void testPerformActionWithNoRolloverAliasSetting() {
93+
long creationDate = randomLongBetween(0, 1000000);
94+
IndexMetaData indexMetaData = IndexMetaData.builder(randomAlphaOfLength(11))
95+
.settings(settings(Version.CURRENT)).creationDate(creationDate).numberOfShards(randomIntBetween(1, 5))
96+
.numberOfReplicas(randomIntBetween(0, 5)).build();
97+
ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT)
98+
.metaData(MetaData.builder().put(indexMetaData, false)).build();
99+
UpdateRolloverLifecycleDateStep step = createRandomInstance();
100+
101+
IllegalStateException exceptionThrown = expectThrows(IllegalStateException.class,
102+
() -> step.performAction(indexMetaData.getIndex(), clusterState));
103+
assertThat(exceptionThrown.getMessage(),
104+
equalTo("setting [index.lifecycle.rollover_alias] is not set on index [" + indexMetaData.getIndex().getName() +"]"));
105+
}
106+
}

x-pack/plugin/index-lifecycle/src/main/java/org/elasticsearch/xpack/indexlifecycle/ExecuteStepsUpdateTask.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
import org.elasticsearch.common.logging.ESLoggerFactory;
1313
import org.elasticsearch.common.xcontent.ToXContentObject;
1414
import org.elasticsearch.index.Index;
15+
import org.elasticsearch.xpack.core.indexlifecycle.ClusterStateActionStep;
1516
import org.elasticsearch.xpack.core.indexlifecycle.ClusterStateWaitStep;
16-
import org.elasticsearch.xpack.core.indexlifecycle.InitializePolicyContextStep;
1717
import org.elasticsearch.xpack.core.indexlifecycle.Step;
1818

1919
import java.io.IOException;
@@ -58,12 +58,12 @@ public ClusterState execute(ClusterState currentState) throws IOException {
5858
// We can do cluster state steps all together until we
5959
// either get to a step that isn't a cluster state step or a
6060
// cluster state wait step returns not completed
61-
while (currentStep instanceof InitializePolicyContextStep || currentStep instanceof ClusterStateWaitStep) {
62-
if (currentStep instanceof InitializePolicyContextStep) {
61+
while (currentStep instanceof ClusterStateActionStep || currentStep instanceof ClusterStateWaitStep) {
62+
if (currentStep instanceof ClusterStateActionStep) {
6363
// cluster state action step so do the action and
6464
// move
6565
// the cluster state to the next step
66-
currentState = ((InitializePolicyContextStep) currentStep).performAction(index, currentState);
66+
currentState = ((ClusterStateActionStep) currentStep).performAction(index, currentState);
6767
if (currentStep.getNextStepKey() == null) {
6868
return currentState;
6969
}

x-pack/plugin/index-lifecycle/src/main/java/org/elasticsearch/xpack/indexlifecycle/IndexLifecycleRunner.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
import org.elasticsearch.index.Index;
2626
import org.elasticsearch.xpack.core.indexlifecycle.AsyncActionStep;
2727
import org.elasticsearch.xpack.core.indexlifecycle.AsyncWaitStep;
28+
import org.elasticsearch.xpack.core.indexlifecycle.ClusterStateActionStep;
2829
import org.elasticsearch.xpack.core.indexlifecycle.ClusterStateWaitStep;
2930
import org.elasticsearch.xpack.core.indexlifecycle.ErrorStep;
30-
import org.elasticsearch.xpack.core.indexlifecycle.InitializePolicyContextStep;
3131
import org.elasticsearch.xpack.core.indexlifecycle.LifecyclePolicy;
3232
import org.elasticsearch.xpack.core.indexlifecycle.LifecycleSettings;
3333
import org.elasticsearch.xpack.core.indexlifecycle.RolloverAction;
@@ -70,7 +70,7 @@ public void runPolicy(String policy, IndexMetaData indexMetaData, ClusterState c
7070
} else if (currentStep instanceof ErrorStep) {
7171
logger.debug(
7272
"policy [" + policy + "] for index [" + indexMetaData.getIndex().getName() + "] on an error step, skipping execution");
73-
} else if (currentStep instanceof InitializePolicyContextStep || currentStep instanceof ClusterStateWaitStep) {
73+
} else if (currentStep instanceof ClusterStateActionStep || currentStep instanceof ClusterStateWaitStep) {
7474
executeClusterStateSteps(indexMetaData.getIndex(), policy, currentStep);
7575
} else if (currentStep instanceof AsyncWaitStep) {
7676
if (fromClusterStateChange == false) {
@@ -124,7 +124,7 @@ private void runPolicy(IndexMetaData indexMetaData, ClusterState currentState) {
124124
}
125125

126126
private void executeClusterStateSteps(Index index, String policy, Step step) {
127-
assert step instanceof InitializePolicyContextStep || step instanceof ClusterStateWaitStep;
127+
assert step instanceof ClusterStateActionStep || step instanceof ClusterStateWaitStep;
128128
clusterService.submitStateUpdateTask("ILM", new ExecuteStepsUpdateTask(policy, index, step, stepRegistry, nowSupplier));
129129
}
130130

x-pack/plugin/index-lifecycle/src/test/java/org/elasticsearch/xpack/indexlifecycle/ExecuteStepsUpdateTaskTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import org.elasticsearch.xpack.core.indexlifecycle.TerminalPolicyStep;
3535
import org.elasticsearch.xpack.core.indexlifecycle.TestLifecycleType;
3636
import org.elasticsearch.xpack.indexlifecycle.IndexLifecycleRunnerTests.MockClusterStateWaitStep;
37-
import org.elasticsearch.xpack.indexlifecycle.IndexLifecycleRunnerTests.MockInitializePolicyContextStep;
37+
import org.elasticsearch.xpack.indexlifecycle.IndexLifecycleRunnerTests.MockClusterStateActionStep;
3838
import org.junit.Before;
3939
import org.mockito.Mockito;
4040

@@ -57,7 +57,7 @@ public class ExecuteStepsUpdateTaskTests extends ESTestCase {
5757
private String mixedPolicyName;
5858
private String allClusterPolicyName;
5959
private Index index;
60-
private MockInitializePolicyContextStep firstStep;
60+
private MockClusterStateActionStep firstStep;
6161
private MockClusterStateWaitStep secondStep;
6262
private MockClusterStateWaitStep allClusterSecondStep;
6363
private MockStep thirdStep;
@@ -67,7 +67,7 @@ public class ExecuteStepsUpdateTaskTests extends ESTestCase {
6767
public void prepareState() {
6868
client = Mockito.mock(Client.class);
6969
Mockito.when(client.settings()).thenReturn(Settings.EMPTY);
70-
firstStep = new MockInitializePolicyContextStep(firstStepKey, secondStepKey);
70+
firstStep = new MockClusterStateActionStep(firstStepKey, secondStepKey);
7171
secondStep = new MockClusterStateWaitStep(secondStepKey, thirdStepKey);
7272
secondStep.setWillComplete(true);
7373
allClusterSecondStep = new MockClusterStateWaitStep(secondStepKey, TerminalPolicyStep.KEY);

x-pack/plugin/index-lifecycle/src/test/java/org/elasticsearch/xpack/indexlifecycle/IndexLifecycleRunnerTests.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
import org.elasticsearch.xpack.core.indexlifecycle.AbstractStepTestCase;
2626
import org.elasticsearch.xpack.core.indexlifecycle.AsyncActionStep;
2727
import org.elasticsearch.xpack.core.indexlifecycle.AsyncWaitStep;
28+
import org.elasticsearch.xpack.core.indexlifecycle.ClusterStateActionStep;
2829
import org.elasticsearch.xpack.core.indexlifecycle.ClusterStateWaitStep;
2930
import org.elasticsearch.xpack.core.indexlifecycle.ErrorStep;
30-
import org.elasticsearch.xpack.core.indexlifecycle.InitializePolicyContextStep;
3131
import org.elasticsearch.xpack.core.indexlifecycle.LifecyclePolicy;
3232
import org.elasticsearch.xpack.core.indexlifecycle.LifecyclePolicyMetadata;
3333
import org.elasticsearch.xpack.core.indexlifecycle.LifecycleSettings;
@@ -98,10 +98,10 @@ public void testRunPolicyErrorStep() {
9898
Mockito.verifyZeroInteractions(clusterService);
9999
}
100100

101-
public void testRunPolicyInitializePolicyContextStep() {
101+
public void testRunPolicyClusterStateActionStep() {
102102
String policyName = "cluster_state_action_policy";
103103
StepKey stepKey = new StepKey("phase", "action", "cluster_state_action_step");
104-
MockInitializePolicyContextStep step = new MockInitializePolicyContextStep(stepKey, null);
104+
MockClusterStateActionStep step = new MockClusterStateActionStep(stepKey, null);
105105
PolicyStepsRegistry stepRegistry = createOneStepPolicyStepRegistry(policyName, step);
106106
ClusterService clusterService = mock(ClusterService.class);
107107
IndexLifecycleRunner runner = new IndexLifecycleRunner(stepRegistry, clusterService, () -> 0L);
@@ -805,7 +805,7 @@ public void testSkipped() {
805805
.put(LifecycleSettings.LIFECYCLE_ACTION, randomAlphaOfLength(5))
806806
.put(LifecycleSettings.LIFECYCLE_STEP, randomAlphaOfLength(5))
807807
.put(LifecycleSettings.LIFECYCLE_SKIP, true));
808-
Step step = mock(randomFrom(TerminalPolicyStep.class, InitializePolicyContextStep.class,
808+
Step step = mock(randomFrom(TerminalPolicyStep.class, ClusterStateActionStep.class,
809809
ClusterStateWaitStep.class, AsyncActionStep.class, AsyncWaitStep.class));
810810
PolicyStepsRegistry stepRegistry = createOneStepPolicyStepRegistry(policy, step);
811811
ClusterService clusterService = mock(ClusterService.class);
@@ -1352,12 +1352,12 @@ public void evaluateCondition(Index index, Listener listener) {
13521352

13531353
}
13541354

1355-
static class MockInitializePolicyContextStep extends InitializePolicyContextStep {
1355+
static class MockClusterStateActionStep extends ClusterStateActionStep {
13561356

13571357
private RuntimeException exception;
13581358
private long executeCount = 0;
13591359

1360-
MockInitializePolicyContextStep(StepKey key, StepKey nextStepKey) {
1360+
MockClusterStateActionStep(StepKey key, StepKey nextStepKey) {
13611361
super(key, nextStepKey);
13621362
}
13631363

0 commit comments

Comments
 (0)