From fdc92f2a4e2a864d2e01346736421845ae158984 Mon Sep 17 00:00:00 2001 From: David Turner Date: Thu, 5 May 2022 11:35:57 +0100 Subject: [PATCH] Remove LegacyCTRAL from MetadataIndexTemplateService Relates #83784, #86017 --- .../MetadataIndexTemplateService.java | 97 ++++++++----------- 1 file changed, 40 insertions(+), 57 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java b/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java index 381c45f660117..b0bdacb97f8b0 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java @@ -21,7 +21,7 @@ import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.ClusterStateTaskConfig; import org.elasticsearch.cluster.ClusterStateTaskExecutor; -import org.elasticsearch.cluster.ClusterStateUpdateTask; +import org.elasticsearch.cluster.ClusterStateTaskListener; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.Priority; import org.elasticsearch.common.Strings; @@ -35,7 +35,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.set.Sets; import org.elasticsearch.core.Nullable; -import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.core.TimeValue; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexMode; @@ -132,7 +131,7 @@ public class MetadataIndexTemplateService { try { final var task = taskContext.getTask(); state = task.execute(state); - taskContext.success(new ClusterStateTaskExecutor.LegacyClusterTaskResultActionListener(task, currentState)); + taskContext.success(task.listener.map(ignored -> AcknowledgedResponse.TRUE)); } catch (Exception e) { taskContext.onFailure(e); } @@ -144,20 +143,14 @@ public class MetadataIndexTemplateService { * A specialized cluster state update task that always takes a listener handling an * AcknowledgedResponse, as all template actions have simple acknowledged yes/no responses. */ - private abstract static class TemplateClusterStateUpdateTask extends ClusterStateUpdateTask { - private final ActionListener listener; + private abstract static class TemplateClusterStateUpdateTask implements ClusterStateTaskListener { + final ActionListener listener; - TemplateClusterStateUpdateTask(Priority priority, TimeValue timeout, ActionListener listener) { - super(priority, timeout); + TemplateClusterStateUpdateTask(ActionListener listener) { this.listener = listener; } - public abstract ClusterState doExecute(ClusterState currentState) throws Exception; - - @Override - public ClusterState execute(ClusterState currentState) throws Exception { - return doExecute(currentState); - } + public abstract ClusterState execute(ClusterState currentState) throws Exception; @Override public void onFailure(Exception e) { @@ -166,7 +159,7 @@ public void onFailure(Exception e) { @Override public void clusterStateProcessed(ClusterState oldState, ClusterState newState) { - listener.onResponse(AcknowledgedResponse.TRUE); + assert false : "not called"; } } @@ -189,43 +182,33 @@ public MetadataIndexTemplateService( this.indexSettingProviders = indexSettingProviders.getIndexSettingProviders(); } - @SuppressForbidden(reason = "legacy usage of unbatched task") // TODO add support for batching here - private void submitUnbatchedTask(String source, ClusterStateUpdateTask task) { - clusterService.submitUnbatchedStateUpdateTask(source, task); - } - public void removeTemplates(final RemoveRequest request, final ActionListener listener) { - clusterService.submitStateUpdateTask( - "remove-index-template [" + request.name + "]", - new TemplateClusterStateUpdateTask(Priority.URGENT, request.masterTimeout, listener) { - @Override - public ClusterState doExecute(ClusterState currentState) { - Set templateNames = new HashSet<>(); - for (Map.Entry cursor : currentState.metadata().templates().entrySet()) { - String templateName = cursor.getKey(); - if (Regex.simpleMatch(request.name, templateName)) { - templateNames.add(templateName); - } - } - if (templateNames.isEmpty()) { - // if its a match all pattern, and no templates are found (we have none), don't - // fail with index missing... - if (Regex.isMatchAllPattern(request.name)) { - return currentState; - } - throw new IndexTemplateMissingException(request.name); + clusterService.submitStateUpdateTask("remove-index-template [" + request.name + "]", new TemplateClusterStateUpdateTask(listener) { + @Override + public ClusterState execute(ClusterState currentState) { + Set templateNames = new HashSet<>(); + for (Map.Entry cursor : currentState.metadata().templates().entrySet()) { + String templateName = cursor.getKey(); + if (Regex.simpleMatch(request.name, templateName)) { + templateNames.add(templateName); } - Metadata.Builder metadata = Metadata.builder(currentState.metadata()); - for (String templateName : templateNames) { - logger.info("removing template [{}]", templateName); - metadata.removeTemplate(templateName); + } + if (templateNames.isEmpty()) { + // if its a match all pattern, and no templates are found (we have none), don't + // fail with index missing... + if (Regex.isMatchAllPattern(request.name)) { + return currentState; } - return ClusterState.builder(currentState).metadata(metadata).build(); + throw new IndexTemplateMissingException(request.name); } - }, - ClusterStateTaskConfig.build(Priority.URGENT, request.masterTimeout), - TEMPLATE_TASK_EXECUTOR - ); + Metadata.Builder metadata = Metadata.builder(currentState.metadata()); + for (String templateName : templateNames) { + logger.info("removing template [{}]", templateName); + metadata.removeTemplate(templateName); + } + return ClusterState.builder(currentState).metadata(metadata).build(); + } + }, ClusterStateTaskConfig.build(Priority.URGENT, request.masterTimeout), TEMPLATE_TASK_EXECUTOR); } /** @@ -242,9 +225,9 @@ public void putComponentTemplate( ) { clusterService.submitStateUpdateTask( "create-component-template [" + name + "], cause [" + cause + "]", - new TemplateClusterStateUpdateTask(Priority.URGENT, masterTimeout, listener) { + new TemplateClusterStateUpdateTask(listener) { @Override - public ClusterState doExecute(ClusterState currentState) throws Exception { + public ClusterState execute(ClusterState currentState) throws Exception { return addComponentTemplate(currentState, create, name, template); } }, @@ -404,9 +387,9 @@ public void removeComponentTemplate( validateNotInUse(state.metadata(), names); clusterService.submitStateUpdateTask( "remove-component-template [" + String.join(",", names) + "]", - new TemplateClusterStateUpdateTask(Priority.URGENT, masterTimeout, listener) { + new TemplateClusterStateUpdateTask(listener) { @Override - public ClusterState doExecute(ClusterState currentState) { + public ClusterState execute(ClusterState currentState) { return innerRemoveComponentTemplate(currentState, names); } }, @@ -511,9 +494,9 @@ public void putIndexTemplateV2( validateV2TemplateRequest(clusterService.state().metadata(), name, template); clusterService.submitStateUpdateTask( "create-index-template-v2 [" + name + "], cause [" + cause + "]", - new TemplateClusterStateUpdateTask(Priority.URGENT, masterTimeout, listener) { + new TemplateClusterStateUpdateTask(listener) { @Override - public ClusterState doExecute(ClusterState currentState) throws Exception { + public ClusterState execute(ClusterState currentState) throws Exception { return addIndexTemplateV2(currentState, create, name, template); } }, @@ -895,9 +878,9 @@ public void removeIndexTemplateV2( ) { clusterService.submitStateUpdateTask( "remove-index-template-v2 [" + String.join(",", names) + "]", - new TemplateClusterStateUpdateTask(Priority.URGENT, masterTimeout, listener) { + new TemplateClusterStateUpdateTask(listener) { @Override - public ClusterState doExecute(ClusterState currentState) { + public ClusterState execute(ClusterState currentState) { return innerRemoveIndexTemplateV2(currentState, names); } }, @@ -1019,9 +1002,9 @@ public void putTemplate(final PutRequest request, final ActionListener