From 2432e67dc9b43b64eda835db94e0a0a0189b05f0 Mon Sep 17 00:00:00 2001 From: jaymode Date: Fri, 28 Feb 2020 10:03:29 -0700 Subject: [PATCH] Remove TODO in IndexNameExpressionResolver This commit removes a TODO in the IndexNameExpressionResolver that indicated the API should use a Set instead of a List. However, this TODO was not completely correct since the ordering of arguments matters due to negations when evaluating wildcards and since we also allow a list of patterns like `*,-foo,*`, which would have a different meaning even when using a Set with insertion ordering. Relates #52788 --- .../cluster/metadata/IndexNameExpressionResolver.java | 2 -- .../cluster/metadata/IndexNameExpressionResolverTests.java | 4 ++++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolver.java b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolver.java index d68d69bf24e8c..b0b19164334c9 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolver.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolver.java @@ -680,8 +680,6 @@ public List resolve(Context context, List expressions) { return resolveEmptyOrTrivialWildcard(options, metaData); } - // TODO: Fix API to work with sets rather than lists since we need to convert to sets - // internally anyway. Set result = innerResolve(context, expressions, options, metaData); if (result == null) { diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolverTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolverTests.java index ab2177b51d684..da39bc0885a1e 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolverTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolverTests.java @@ -351,6 +351,10 @@ public void testIndexOptionsWildcardExpansion() { assertEquals(1, results.length); assertEquals("bar", results[0]); + results = indexNameExpressionResolver.concreteIndexNames(context, "*", "-foo", "*"); + assertEquals(3, results.length); + assertThat(results, arrayContainingInAnyOrder("bar", "foobar", "foo")); + results = indexNameExpressionResolver.concreteIndexNames(context, "-*"); assertEquals(0, results.length);