diff --git a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycleTask.java b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycleTask.java index c070a8be2f01e..2451441bbb4c0 100644 --- a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycleTask.java +++ b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/slm/SnapshotLifecycleTask.java @@ -21,6 +21,7 @@ import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesReference; +import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.json.JsonXContent; @@ -85,7 +86,8 @@ public static Optional maybeTakeSnapshot(final String jobId, final Clien final SnapshotHistoryStore historyStore) { Optional maybeMetadata = getSnapPolicyMetadata(jobId, clusterService.state()); String snapshotName = maybeMetadata.map(policyMetadata -> { - CreateSnapshotRequest request = policyMetadata.getPolicy().toRequest(); + // don't time out on this request to not produce failed SLM runs in case of a temporarily slow master node + CreateSnapshotRequest request = policyMetadata.getPolicy().toRequest().masterNodeTimeout(TimeValue.MAX_VALUE); final LifecyclePolicySecurityClient clientWithHeaders = new LifecyclePolicySecurityClient(client, ClientHelper.INDEX_LIFECYCLE_ORIGIN, policyMetadata.getHeaders()); logger.info("snapshot lifecycle policy [{}] issuing create snapshot [{}]", diff --git a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/slm/SnapshotRetentionTask.java b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/slm/SnapshotRetentionTask.java index bf3a240b998f6..69bcc1e11132b 100644 --- a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/slm/SnapshotRetentionTask.java +++ b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/slm/SnapshotRetentionTask.java @@ -242,6 +242,8 @@ void getAllRetainableSnapshots(Collection repositories, ActionListener { if (logger.isTraceEnabled()) { @@ -373,7 +375,9 @@ private void deleteSnapshots(SnapshotLifecycleStats slmStats, AtomicInteger dele void deleteSnapshot(String slmPolicy, String repo, SnapshotId snapshot, SnapshotLifecycleStats slmStats, ActionListener listener) { logger.info("[{}] snapshot retention deleting snapshot [{}]", repo, snapshot); - client.admin().cluster().prepareDeleteSnapshot(repo, snapshot.getName()).execute(ActionListener.wrap(acknowledgedResponse -> { + // don't time out on this request to not produce failed SLM runs in case of a temporarily slow master node + client.admin().cluster().prepareDeleteSnapshot(repo, snapshot.getName()).setMasterNodeTimeout(TimeValue.MAX_VALUE).execute( + ActionListener.wrap(acknowledgedResponse -> { slmStats.snapshotDeleted(slmPolicy); listener.onResponse(acknowledgedResponse); },