|
@@ -22,6 +22,7 @@ package org.elasticsearch.client.documentation;
|
|
|
import org.apache.http.util.EntityUtils;
|
|
|
import org.elasticsearch.action.ActionListener;
|
|
|
import org.elasticsearch.action.LatchedActionListener;
|
|
|
+import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
|
|
|
import org.elasticsearch.client.ESRestHighLevelClientTestCase;
|
|
|
import org.elasticsearch.client.RequestOptions;
|
|
|
import org.elasticsearch.client.Response;
|
|
@@ -29,6 +30,7 @@ import org.elasticsearch.client.RestHighLevelClient;
|
|
|
import org.elasticsearch.client.core.AcknowledgedResponse;
|
|
|
import org.elasticsearch.client.indexlifecycle.DeleteAction;
|
|
|
import org.elasticsearch.client.indexlifecycle.DeleteLifecyclePolicyRequest;
|
|
|
+import org.elasticsearch.client.indexlifecycle.ExplainLifecycleRequest;
|
|
|
import org.elasticsearch.client.indexlifecycle.GetLifecyclePolicyRequest;
|
|
|
import org.elasticsearch.client.indexlifecycle.GetLifecyclePolicyResponse;
|
|
|
import org.elasticsearch.client.indexlifecycle.LifecycleAction;
|
|
@@ -39,11 +41,14 @@ import org.elasticsearch.client.indexlifecycle.OperationMode;
|
|
|
import org.elasticsearch.client.indexlifecycle.LifecyclePolicyMetadata;
|
|
|
import org.elasticsearch.client.indexlifecycle.Phase;
|
|
|
import org.elasticsearch.client.indexlifecycle.PutLifecyclePolicyRequest;
|
|
|
+import org.elasticsearch.client.indexlifecycle.RetryLifecyclePolicyRequest;
|
|
|
import org.elasticsearch.client.indexlifecycle.RolloverAction;
|
|
|
import org.elasticsearch.client.indexlifecycle.StartILMRequest;
|
|
|
import org.elasticsearch.client.indexlifecycle.StopILMRequest;
|
|
|
import org.elasticsearch.client.indexlifecycle.ShrinkAction;
|
|
|
+import org.elasticsearch.cluster.metadata.IndexMetaData;
|
|
|
import org.elasticsearch.common.collect.ImmutableOpenMap;
|
|
|
+import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.common.unit.ByteSizeUnit;
|
|
|
import org.elasticsearch.common.unit.ByteSizeValue;
|
|
|
import org.elasticsearch.common.unit.TimeValue;
|
|
@@ -72,14 +77,14 @@ public class ILMDocumentationIT extends ESRestHighLevelClientTestCase {
|
|
|
new ByteSizeValue(50, ByteSizeUnit.GB), null, null));
|
|
|
phases.put("hot", new Phase("hot", TimeValue.ZERO, hotActions)); // <1>
|
|
|
|
|
|
- Map<String, LifecycleAction> deleteActions =
|
|
|
+ Map<String, LifecycleAction> deleteActions =
|
|
|
Collections.singletonMap(DeleteAction.NAME, new DeleteAction());
|
|
|
- phases.put("delete", new Phase("delete",
|
|
|
+ phases.put("delete", new Phase("delete",
|
|
|
new TimeValue(90, TimeUnit.DAYS), deleteActions)); // <2>
|
|
|
|
|
|
LifecyclePolicy policy = new LifecyclePolicy("my_policy",
|
|
|
phases); // <3>
|
|
|
- PutLifecyclePolicyRequest request =
|
|
|
+ PutLifecyclePolicyRequest request =
|
|
|
new PutLifecyclePolicyRequest(policy);
|
|
|
// end::ilm-put-lifecycle-policy-request
|
|
|
|
|
@@ -96,10 +101,10 @@ public class ILMDocumentationIT extends ESRestHighLevelClientTestCase {
|
|
|
|
|
|
// Delete the policy so it can be added again
|
|
|
{
|
|
|
- DeleteLifecyclePolicyRequest deleteRequest =
|
|
|
+ DeleteLifecyclePolicyRequest deleteRequest =
|
|
|
new DeleteLifecyclePolicyRequest("my_policy");
|
|
|
AcknowledgedResponse deleteResponse = client.indexLifecycle()
|
|
|
- .deleteLifecyclePolicy(deleteRequest,
|
|
|
+ .deleteLifecyclePolicy(deleteRequest,
|
|
|
RequestOptions.DEFAULT);
|
|
|
assertTrue(deleteResponse.isAcknowledged());
|
|
|
}
|
|
@@ -124,7 +129,7 @@ public class ILMDocumentationIT extends ESRestHighLevelClientTestCase {
|
|
|
listener = new LatchedActionListener<>(listener, latch);
|
|
|
|
|
|
// tag::ilm-put-lifecycle-policy-execute-async
|
|
|
- client.indexLifecycle().putLifecyclePolicyAsync(request,
|
|
|
+ client.indexLifecycle().putLifecyclePolicyAsync(request,
|
|
|
RequestOptions.DEFAULT, listener); // <1>
|
|
|
// end::ilm-put-lifecycle-policy-execute-async
|
|
|
|
|
@@ -380,6 +385,77 @@ public class ILMDocumentationIT extends ESRestHighLevelClientTestCase {
|
|
|
assertTrue(latch.await(30L, TimeUnit.SECONDS));
|
|
|
}
|
|
|
|
|
|
+ public void testRetryPolicy() throws Exception {
|
|
|
+ RestHighLevelClient client = highLevelClient();
|
|
|
+
|
|
|
+ // setup policy to immediately fail on index
|
|
|
+ {
|
|
|
+ Map<String, Phase> phases = new HashMap<>();
|
|
|
+ Map<String, LifecycleAction> warmActions = new HashMap<>();
|
|
|
+ warmActions.put(ShrinkAction.NAME, new ShrinkAction(1));
|
|
|
+ phases.put("warm", new Phase("warm", TimeValue.ZERO, warmActions));
|
|
|
+
|
|
|
+ LifecyclePolicy policy = new LifecyclePolicy("my_policy",
|
|
|
+ phases);
|
|
|
+ PutLifecyclePolicyRequest putRequest =
|
|
|
+ new PutLifecyclePolicyRequest(policy);
|
|
|
+ client.indexLifecycle().putLifecyclePolicy(putRequest, RequestOptions.DEFAULT);
|
|
|
+
|
|
|
+ CreateIndexRequest createIndexRequest = new CreateIndexRequest("my_index",
|
|
|
+ Settings.builder()
|
|
|
+ .put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1)
|
|
|
+ .put("index.lifecycle.name", "my_policy")
|
|
|
+ .build());
|
|
|
+ client.indices().create(createIndexRequest, RequestOptions.DEFAULT);
|
|
|
+ assertBusy(() -> assertNotNull(client.indexLifecycle()
|
|
|
+ .explainLifecycle(new ExplainLifecycleRequest().indices("my_index"), RequestOptions.DEFAULT)
|
|
|
+ .getIndexResponses().get("my_index").getFailedStep()));
|
|
|
+ }
|
|
|
+
|
|
|
+ // tag::ilm-retry-lifecycle-policy-request
|
|
|
+ RetryLifecyclePolicyRequest request =
|
|
|
+ new RetryLifecyclePolicyRequest("my_index"); // <1>
|
|
|
+ // end::ilm-retry-lifecycle-policy-request
|
|
|
+
|
|
|
+
|
|
|
+ // tag::ilm-retry-lifecycle-policy-execute
|
|
|
+ AcknowledgedResponse response = client.indexLifecycle()
|
|
|
+ .retryLifecyclePolicy(request, RequestOptions.DEFAULT);
|
|
|
+ // end::ilm-retry-lifecycle-policy-execute
|
|
|
+
|
|
|
+ // tag::ilm-retry-lifecycle-policy-response
|
|
|
+ boolean acknowledged = response.isAcknowledged(); // <1>
|
|
|
+ // end::ilm-retry-lifecycle-policy-response
|
|
|
+
|
|
|
+ assertTrue(acknowledged);
|
|
|
+
|
|
|
+ // tag::ilm-retry-lifecycle-policy-execute-listener
|
|
|
+ ActionListener<AcknowledgedResponse> listener =
|
|
|
+ new ActionListener<AcknowledgedResponse>() {
|
|
|
+ @Override
|
|
|
+ public void onResponse(AcknowledgedResponse response) {
|
|
|
+ boolean acknowledged = response.isAcknowledged(); // <1>
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onFailure(Exception e) {
|
|
|
+ // <2>
|
|
|
+ }
|
|
|
+ };
|
|
|
+ // end::ilm-retry-lifecycle-policy-execute-listener
|
|
|
+
|
|
|
+ // Replace the empty listener by a blocking listener in test
|
|
|
+ final CountDownLatch latch = new CountDownLatch(1);
|
|
|
+ listener = new LatchedActionListener<>(listener, latch);
|
|
|
+
|
|
|
+ // tag::ilm-retry-lifecycle-policy-execute-async
|
|
|
+ client.indexLifecycle().retryLifecyclePolicyAsync(request,
|
|
|
+ RequestOptions.DEFAULT, listener); // <1>
|
|
|
+ // end::ilm-retry-lifecycle-policy-execute-async
|
|
|
+
|
|
|
+ assertTrue(latch.await(30L, TimeUnit.SECONDS));
|
|
|
+ }
|
|
|
+
|
|
|
static Map<String, Object> toMap(Response response) throws IOException {
|
|
|
return XContentHelper.convertToMap(JsonXContent.jsonXContent, EntityUtils.toString(response.getEntity()), false);
|
|
|
}
|