Skip to content

Commit d43f3d8

Browse files
committed
The +index pattern without a wildcard in the index list is handled inconsistently
Fixes elastic#3979
1 parent 3b4b05e commit d43f3d8

File tree

2 files changed

+29
-24
lines changed

2 files changed

+29
-24
lines changed

src/main/java/org/elasticsearch/cluster/metadata/MetaData.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,10 @@ public String[] convertFromWildcards(String[] aliasesOrIndices, boolean wildcard
671671
}
672672
boolean add = true;
673673
if (aliasOrIndex.charAt(0) == '+') {
674+
// if its the first, add empty result set
675+
if (i == 0) {
676+
result = new HashSet<String>();
677+
}
674678
add = true;
675679
aliasOrIndex = aliasOrIndex.substring(1);
676680
} else if (aliasOrIndex.charAt(0) == '-') {

src/test/java/org/elasticsearch/cluster/metadata/MetaDataTests.java

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.junit.Test;
2828

2929
import static com.google.common.collect.Sets.newHashSet;
30-
import static org.hamcrest.MatcherAssert.assertThat;
3130
import static org.hamcrest.Matchers.equalTo;
3231

3332
/**
@@ -61,46 +60,48 @@ public void convertWildcardsTests() {
6160
assertThat(newHashSet(md.convertFromWildcards(new String[]{"testYY*", "alias*"}, true, IgnoreIndices.MISSING)), equalTo(newHashSet("alias1", "alias2", "alias3", "testYYY")));
6261
assertThat(newHashSet(md.convertFromWildcards(new String[]{"-kuku"}, true, IgnoreIndices.MISSING)), equalTo(newHashSet("testXXX", "testXYY", "testYYY")));
6362
assertThat(newHashSet(md.convertFromWildcards(new String[]{"+test*", "-testYYY"}, true, IgnoreIndices.MISSING)), equalTo(newHashSet("testXXX", "testXYY")));
63+
assertThat(newHashSet(md.convertFromWildcards(new String[]{"+testX*", "+testYYY"}, true, IgnoreIndices.MISSING)), equalTo(newHashSet("testXXX", "testXYY", "testYYY")));
64+
assertThat(newHashSet(md.convertFromWildcards(new String[]{"+testYYY", "+testX*"}, true, IgnoreIndices.MISSING)), equalTo(newHashSet("testXXX", "testXYY", "testYYY")));
6465
}
6566

6667
private IndexMetaData.Builder indexBuilder(String index) {
6768
return IndexMetaData.builder(index).settings(ImmutableSettings.settingsBuilder().put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1).put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 0));
6869
}
69-
70+
7071
@Test(expected = IndexMissingException.class)
7172
public void concreteIndicesIgnoreIndicesOneMissingIndex() {
72-
MetaData.Builder mdBuilder = MetaData.builder()
73-
.put(indexBuilder("testXXX"))
74-
.put(indexBuilder("kuku"));
75-
MetaData md = mdBuilder.build();
76-
md.concreteIndices(new String[]{"testZZZ"}, IgnoreIndices.MISSING, true);
73+
MetaData.Builder mdBuilder = MetaData.builder()
74+
.put(indexBuilder("testXXX"))
75+
.put(indexBuilder("kuku"));
76+
MetaData md = mdBuilder.build();
77+
md.concreteIndices(new String[]{"testZZZ"}, IgnoreIndices.MISSING, true);
7778
}
78-
79+
7980
@Test
8081
public void concreteIndicesIgnoreIndicesOneMissingIndexOtherFound() {
81-
MetaData.Builder mdBuilder = MetaData.builder()
82-
.put(indexBuilder("testXXX"))
83-
.put(indexBuilder("kuku"));
84-
MetaData md = mdBuilder.build();
85-
assertThat(newHashSet(md.concreteIndices(new String[]{"testXXX","testZZZ"}, IgnoreIndices.MISSING, true)), equalTo(newHashSet("testXXX")));
82+
MetaData.Builder mdBuilder = MetaData.builder()
83+
.put(indexBuilder("testXXX"))
84+
.put(indexBuilder("kuku"));
85+
MetaData md = mdBuilder.build();
86+
assertThat(newHashSet(md.concreteIndices(new String[]{"testXXX", "testZZZ"}, IgnoreIndices.MISSING, true)), equalTo(newHashSet("testXXX")));
8687
}
8788

8889
@Test(expected = IndexMissingException.class)
8990
public void concreteIndicesIgnoreIndicesAllMissing() {
90-
MetaData.Builder mdBuilder = MetaData.builder()
91-
.put(indexBuilder("testXXX"))
92-
.put(indexBuilder("kuku"));
93-
MetaData md = mdBuilder.build();
94-
assertThat(newHashSet(md.concreteIndices(new String[]{"testMo","testMahdy"}, IgnoreIndices.MISSING, true)), equalTo(newHashSet("testXXX")));
91+
MetaData.Builder mdBuilder = MetaData.builder()
92+
.put(indexBuilder("testXXX"))
93+
.put(indexBuilder("kuku"));
94+
MetaData md = mdBuilder.build();
95+
assertThat(newHashSet(md.concreteIndices(new String[]{"testMo", "testMahdy"}, IgnoreIndices.MISSING, true)), equalTo(newHashSet("testXXX")));
9596
}
96-
97+
9798
@Test
9899
public void concreteIndicesIgnoreIndicesEmptyRequest() {
99-
MetaData.Builder mdBuilder = MetaData.builder()
100-
.put(indexBuilder("testXXX"))
101-
.put(indexBuilder("kuku"));
102-
MetaData md = mdBuilder.build();
103-
assertThat(newHashSet(md.concreteIndices(new String[]{}, IgnoreIndices.MISSING, true)), equalTo(Sets.<String>newHashSet("kuku","testXXX")));
100+
MetaData.Builder mdBuilder = MetaData.builder()
101+
.put(indexBuilder("testXXX"))
102+
.put(indexBuilder("kuku"));
103+
MetaData md = mdBuilder.build();
104+
assertThat(newHashSet(md.concreteIndices(new String[]{}, IgnoreIndices.MISSING, true)), equalTo(Sets.<String>newHashSet("kuku", "testXXX")));
104105
}
105106

106107
@Test

0 commit comments

Comments
 (0)