From 448d6b6cff64623e87491956a086de899a251c22 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) {