fix writeIndex evaluation for aliases (#31562)
AliasOrIndex.Alias#writeIndex was returning a write index when an alias was pointing to only one index, regardless whether `is_write_index` was set to `false`. This fixes that so that there is no write index in such a case that an alias points to only one index with `is_write_index=false`.
This commit is contained in:
parent
237650e9c0
commit
c6012ed575
|
@ -157,9 +157,13 @@ public interface AliasOrIndex {
|
||||||
List<IndexMetaData> writeIndices = referenceIndexMetaDatas.stream()
|
List<IndexMetaData> writeIndices = referenceIndexMetaDatas.stream()
|
||||||
.filter(idxMeta -> Boolean.TRUE.equals(idxMeta.getAliases().get(aliasName).writeIndex()))
|
.filter(idxMeta -> Boolean.TRUE.equals(idxMeta.getAliases().get(aliasName).writeIndex()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
if (referenceIndexMetaDatas.size() == 1) {
|
|
||||||
writeIndex.set(referenceIndexMetaDatas.get(0));
|
if (writeIndices.isEmpty() && referenceIndexMetaDatas.size() == 1
|
||||||
} else if (writeIndices.size() == 1) {
|
&& referenceIndexMetaDatas.get(0).getAliases().get(aliasName).writeIndex() == null) {
|
||||||
|
writeIndices.add(referenceIndexMetaDatas.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (writeIndices.size() == 1) {
|
||||||
writeIndex.set(writeIndices.get(0));
|
writeIndex.set(writeIndices.get(0));
|
||||||
} else if (writeIndices.size() > 1) {
|
} else if (writeIndices.size() > 1) {
|
||||||
List<String> writeIndicesStrings = writeIndices.stream()
|
List<String> writeIndicesStrings = writeIndices.stream()
|
||||||
|
|
|
@ -136,8 +136,7 @@ public class MetaDataIndexAliasesServiceTests extends ESTestCase {
|
||||||
ClusterState after = service.innerExecute(before, Arrays.asList(
|
ClusterState after = service.innerExecute(before, Arrays.asList(
|
||||||
new AliasAction.Add("test", "alias", null, null, null, false)));
|
new AliasAction.Add("test", "alias", null, null, null, false)));
|
||||||
assertFalse(after.metaData().index("test").getAliases().get("alias").writeIndex());
|
assertFalse(after.metaData().index("test").getAliases().get("alias").writeIndex());
|
||||||
assertThat(((AliasOrIndex.Alias) after.metaData().getAliasAndIndexLookup().get("alias")).getWriteIndex(),
|
assertNull(((AliasOrIndex.Alias) after.metaData().getAliasAndIndexLookup().get("alias")).getWriteIndex());
|
||||||
equalTo(after.metaData().index("test")));
|
|
||||||
|
|
||||||
after = service.innerExecute(before, Arrays.asList(
|
after = service.innerExecute(before, Arrays.asList(
|
||||||
new AliasAction.Add("test", "alias", null, null, null, null)));
|
new AliasAction.Add("test", "alias", null, null, null, null)));
|
||||||
|
|
Loading…
Reference in New Issue