From df8fabd5491290f2695cce09e16be95d5ad606ab Mon Sep 17 00:00:00 2001 From: Tal Levy Date: Mon, 25 Jun 2018 13:21:22 -0700 Subject: [PATCH] refactor to use new resolveWriteIndex flag instead of IndicesOptions --- .../ReindexSourceTargetValidationTests.java | 24 ++++--- .../action/bulk/TransportBulkAction.java | 2 +- .../action/index/IndexRequest.java | 6 -- .../action/support/IndicesOptions.java | 22 +----- .../replication/ReplicatedWriteRequest.java | 6 -- .../action/update/UpdateRequest.java | 6 -- .../cluster/metadata/AliasOrIndex.java | 16 ++--- .../metadata/IndexNameExpressionResolver.java | 68 ++++++++++++++++--- .../IndexNameExpressionResolverTests.java | 55 ++++++--------- 9 files changed, 101 insertions(+), 104 deletions(-) diff --git a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexSourceTargetValidationTests.java b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexSourceTargetValidationTests.java index 3616206037c43..b89c2b0120813 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexSourceTargetValidationTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexSourceTargetValidationTests.java @@ -46,13 +46,15 @@ */ public class ReindexSourceTargetValidationTests extends ESTestCase { private static final ClusterState STATE = ClusterState.builder(new ClusterName("test")).metaData(MetaData.builder() - .put(index("target", "target_alias", "target_multi"), true) - .put(index("target2", "target_multi"), true) - .put(index("foo"), true) - .put(index("bar"), true) - .put(index("baz"), true) - .put(index("source", "source_multi"), true) - .put(index("source2", "source_multi"), true)).build(); + .put(index("target", false, "target_alias", "target_multi"), true) + .put(index("target2", false, "target_multi"), true) + .put(index("target3", true, "target_multi_with_write"), true) + .put(index("target4", false, "target_multi_with_write"), true) + .put(index("foo", false), true) + .put(index("bar", false), true) + .put(index("baz", false), true) + .put(index("source", false, "source_multi"), true) + .put(index("source2", false, "source_multi"), true)).build(); private static final IndexNameExpressionResolver INDEX_NAME_EXPRESSION_RESOLVER = new IndexNameExpressionResolver(Settings.EMPTY); private static final AutoCreateIndex AUTO_CREATE_INDEX = new AutoCreateIndex(Settings.EMPTY, new ClusterSettings(Settings.EMPTY, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS), INDEX_NAME_EXPRESSION_RESOLVER); @@ -80,7 +82,11 @@ public void testAliasesContainTarget() { public void testTargetIsAlias() { Exception e = expectThrows(IllegalArgumentException.class, () -> succeeds("target_multi", "foo")); - assertThat(e.getMessage(), containsString("Alias [target_multi] points to multiple indices")); + assertThat(e.getMessage(), containsString("Alias [target_multi] has more than one indices associated with it [[")); + // The index names can come in either order + assertThat(e.getMessage(), containsString("target")); + assertThat(e.getMessage(), containsString("target2")); + succeeds("target_multi_with_write", "foo"); // should this be allowed? } public void testRemoteInfoSkipsValidation() { @@ -106,7 +112,7 @@ private void succeeds(RemoteInfo remoteInfo, String target, String... sources) { INDEX_NAME_EXPRESSION_RESOLVER, AUTO_CREATE_INDEX, STATE); } - private static IndexMetaData index(String name, String... aliases) { + private static IndexMetaData index(String name, boolean isWriteIndex, String... aliases) { IndexMetaData.Builder builder = IndexMetaData.builder(name).settings(Settings.builder() .put("index.version.created", Version.CURRENT.id) .put("index.number_of_shards", 1) diff --git a/server/src/main/java/org/elasticsearch/action/bulk/TransportBulkAction.java b/server/src/main/java/org/elasticsearch/action/bulk/TransportBulkAction.java index 3c79f700bdf9c..72303cf36325b 100644 --- a/server/src/main/java/org/elasticsearch/action/bulk/TransportBulkAction.java +++ b/server/src/main/java/org/elasticsearch/action/bulk/TransportBulkAction.java @@ -474,7 +474,7 @@ Index getConcreteIndex(String indexOrAlias) { Index resolveIfAbsent(DocWriteRequest request) { Index concreteIndex = indices.get(request.index()); if (concreteIndex == null) { - concreteIndex = indexNameExpressionResolver.concreteSingleIndex(state, request); + concreteIndex = indexNameExpressionResolver.concreteWriteIndex(state, request); indices.put(request.index(), concreteIndex); } return concreteIndex; diff --git a/server/src/main/java/org/elasticsearch/action/index/IndexRequest.java b/server/src/main/java/org/elasticsearch/action/index/IndexRequest.java index e711135994e8e..5b4cc94077009 100644 --- a/server/src/main/java/org/elasticsearch/action/index/IndexRequest.java +++ b/server/src/main/java/org/elasticsearch/action/index/IndexRequest.java @@ -25,7 +25,6 @@ import org.elasticsearch.action.CompositeIndicesRequest; import org.elasticsearch.action.DocWriteRequest; import org.elasticsearch.action.RoutingMissingException; -import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.action.support.replication.ReplicatedWriteRequest; import org.elasticsearch.action.support.replication.ReplicationRequest; import org.elasticsearch.client.Requests; @@ -189,11 +188,6 @@ public ActionRequestValidationException validate() { return validationException; } - @Override - public IndicesOptions indicesOptions() { - return IndicesOptions.strictAliasToWriteIndexNoExpandForbidClosed(); - } - /** * The content type. This will be used when generating a document from user provided objects like Maps and when parsing the * source at index time diff --git a/server/src/main/java/org/elasticsearch/action/support/IndicesOptions.java b/server/src/main/java/org/elasticsearch/action/support/IndicesOptions.java index d3dd91cc71c48..b284ec87dd42c 100644 --- a/server/src/main/java/org/elasticsearch/action/support/IndicesOptions.java +++ b/server/src/main/java/org/elasticsearch/action/support/IndicesOptions.java @@ -77,8 +77,7 @@ public enum Option { IGNORE_ALIASES, ALLOW_NO_INDICES, FORBID_ALIASES_TO_MULTIPLE_INDICES, - FORBID_CLOSED_INDICES, - REQUIRE_ALIASES_TO_WRITE_INDEX; + FORBID_CLOSED_INDICES; public static final EnumSet