Skip to content

Commit

Permalink
Make FreezeStep retryable (#52540)
Browse files Browse the repository at this point in the history
* Make FreezeStep retryable

This change marks `FreezeStep` as retryable and adds test to make sure we can really run it again.

* refactor tests
  • Loading branch information
probakowski committed Feb 20, 2020
1 parent e2b410e commit ba9516e
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,9 @@ public void performDuringNoSnapshot(IndexMetaData indexMetaData, ClusterState cu
new FreezeRequest(indexMetaData.getIndex().getName()).masterNodeTimeout(getMasterTimeout(currentState)),
ActionListener.wrap(response -> listener.onResponse(true), listener::onFailure));
}

@Override
public boolean isRetryable() {
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import org.elasticsearch.xpack.core.ilm.ErrorStep;
import org.elasticsearch.xpack.core.ilm.ForceMergeAction;
import org.elasticsearch.xpack.core.ilm.FreezeAction;
import org.elasticsearch.xpack.core.ilm.FreezeStep;
import org.elasticsearch.xpack.core.ilm.InitializePolicyContextStep;
import org.elasticsearch.xpack.core.ilm.LifecycleAction;
import org.elasticsearch.xpack.core.ilm.LifecyclePolicy;
Expand Down Expand Up @@ -228,6 +229,25 @@ public void testRetryFailedDeleteAction() throws Exception {
assertBusy(() -> assertFalse(indexExists(index)));
}

public void testRetryFreezeDeleteAction() throws Exception {
createNewSingletonPolicy("cold", new FreezeAction());

createIndexWithSettings(index, Settings.builder()
.put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1)
.put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 0)
.put(IndexMetaData.SETTING_READ_ONLY, true)
.put("index.lifecycle.name", policy));

assertBusy(() -> assertThat(getFailedStepForIndex(index), equalTo(FreezeStep.NAME)));
assertFalse(getOnlyIndexSettings(index).containsKey("index.frozen"));

Request request = new Request("PUT", index + "/_settings");
request.setJsonEntity("{\"index.blocks.read_only\":false}");
assertOK(client().performRequest(request));

assertBusy(() -> assertThat(getOnlyIndexSettings(index).get("index.frozen"), equalTo("true")));
}

public void testRetryFailedShrinkAction() throws Exception {
int numShards = 4;
int divisor = randomFrom(2, 4);
Expand Down

0 comments on commit ba9516e

Please sign in to comment.