From 25f8d41d720da7ac35e3d78acd4293c1c1d06e1a Mon Sep 17 00:00:00 2001 From: James Baiera Date: Thu, 14 Nov 2019 11:16:53 -0500 Subject: [PATCH] Reuse collected cluster state in EnrichPolicyRunner (#48488) The cluster state is obtained twice in the EnrichPolicyRunner when updating the final alias. There is a possibility for the state to be slightly different between those two calls. This PR just has the function get the cluster state once and reuse it for the life of the function call. --- .../elasticsearch/xpack/enrich/EnrichPolicyRunner.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPolicyRunner.java b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPolicyRunner.java index 699167195af2e..b71cc6ee3a89b 100644 --- a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPolicyRunner.java +++ b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPolicyRunner.java @@ -29,6 +29,7 @@ import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest; import org.elasticsearch.action.support.master.AcknowledgedResponse; import org.elasticsearch.client.Client; +import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.AliasMetaData; import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; import org.elasticsearch.cluster.metadata.MappingMetaData; @@ -498,10 +499,9 @@ private void updateEnrichPolicyAlias(final String destinationIndexName) { String enrichIndexBase = EnrichPolicy.getBaseName(policyName); logger.debug("Policy [{}]: Promoting new enrich index [{}] to alias [{}]", policyName, destinationIndexName, enrichIndexBase); GetAliasesRequest aliasRequest = new GetAliasesRequest(enrichIndexBase); - String[] concreteIndices = indexNameExpressionResolver.concreteIndexNames(clusterService.state(), aliasRequest); - ImmutableOpenMap> aliases = clusterService.state() - .metaData() - .findAliases(aliasRequest, concreteIndices); + ClusterState clusterState = clusterService.state(); + String[] concreteIndices = indexNameExpressionResolver.concreteIndexNames(clusterState, aliasRequest); + ImmutableOpenMap> aliases = clusterState.metaData().findAliases(aliasRequest, concreteIndices); IndicesAliasesRequest aliasToggleRequest = new IndicesAliasesRequest(); String[] indices = aliases.keys().toArray(String.class); if (indices.length > 0) {