From ebfef6fbd96c86fc41124761093775f15082545e Mon Sep 17 00:00:00 2001 From: Przemko Robakowski Date: Wed, 19 Feb 2020 23:22:33 +0100 Subject: [PATCH 1/2] Make FreezeStep retryable This change marks `FreezeStep` as retryable and adds test to make sure we can really run it again. --- .../xpack/core/ilm/FreezeStep.java | 5 +++++ .../ilm/TimeSeriesLifecycleActionsIT.java | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/FreezeStep.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/FreezeStep.java index 4b9c9a24d4caa..3b67e5bdc17d3 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/FreezeStep.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/FreezeStep.java @@ -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; + } } diff --git a/x-pack/plugin/ilm/qa/multi-node/src/test/java/org/elasticsearch/xpack/ilm/TimeSeriesLifecycleActionsIT.java b/x-pack/plugin/ilm/qa/multi-node/src/test/java/org/elasticsearch/xpack/ilm/TimeSeriesLifecycleActionsIT.java index f967c3cc4325c..96b11f426c66a 100644 --- a/x-pack/plugin/ilm/qa/multi-node/src/test/java/org/elasticsearch/xpack/ilm/TimeSeriesLifecycleActionsIT.java +++ b/x-pack/plugin/ilm/qa/multi-node/src/test/java/org/elasticsearch/xpack/ilm/TimeSeriesLifecycleActionsIT.java @@ -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; @@ -228,6 +229,26 @@ public void testRetryFailedDeleteAction() throws Exception { assertBusy(() -> assertFalse(indexExists(index))); } + public void testRetryFreezeDeleteAction() throws Exception { + createIndexWithSettings(index, Settings.builder() + .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1) + .put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 0)); + + createNewSingletonPolicy("cold", new FreezeAction()); + + Request request = new Request("PUT", index + "/_settings"); + request.setJsonEntity("{\"index.blocks.read_only\": true, \"index.lifecycle.name\": \"" + policy + "\"}"); + assertOK(client().performRequest(request)); + + assertBusy(() -> assertThat(getFailedStepForIndex(index), equalTo(FreezeStep.NAME))); + assertFalse(getOnlyIndexSettings(index).containsKey("index.frozen")); + + 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); From 218919d4918d0c2e9f15b49ef13496e45dba76e9 Mon Sep 17 00:00:00 2001 From: Przemko Robakowski Date: Wed, 19 Feb 2020 23:35:59 +0100 Subject: [PATCH 2/2] refactor tests --- .../xpack/ilm/TimeSeriesLifecycleActionsIT.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/x-pack/plugin/ilm/qa/multi-node/src/test/java/org/elasticsearch/xpack/ilm/TimeSeriesLifecycleActionsIT.java b/x-pack/plugin/ilm/qa/multi-node/src/test/java/org/elasticsearch/xpack/ilm/TimeSeriesLifecycleActionsIT.java index 96b11f426c66a..4e700e76eb9a0 100644 --- a/x-pack/plugin/ilm/qa/multi-node/src/test/java/org/elasticsearch/xpack/ilm/TimeSeriesLifecycleActionsIT.java +++ b/x-pack/plugin/ilm/qa/multi-node/src/test/java/org/elasticsearch/xpack/ilm/TimeSeriesLifecycleActionsIT.java @@ -230,19 +230,18 @@ public void testRetryFailedDeleteAction() throws Exception { } public void testRetryFreezeDeleteAction() throws Exception { - createIndexWithSettings(index, Settings.builder() - .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1) - .put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 0)); - createNewSingletonPolicy("cold", new FreezeAction()); - Request request = new Request("PUT", index + "/_settings"); - request.setJsonEntity("{\"index.blocks.read_only\": true, \"index.lifecycle.name\": \"" + policy + "\"}"); - assertOK(client().performRequest(request)); + 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));