Skip to content

Commit

Permalink
Make sure _tier field handles missing setting (#71439)
Browse files Browse the repository at this point in the history
When `_tier_preference` isn't set, getting it returns an empty string "". This
PR updates the _tier metadata field to detect this case correctly.
  • Loading branch information
jtibshirani authored Apr 8, 2021
1 parent 5c99692 commit 5bcd1f3
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ protected boolean matches(String pattern, boolean caseInsensitive, SearchExecuti
pattern = Strings.toLowercaseAscii(pattern);
}
String tierPreference = DataTierAllocationDecider.INDEX_ROUTING_PREFER_SETTING.get(context.getIndexSettings().getSettings());
if (tierPreference == null) {
if (Strings.hasText(tierPreference) == false) {
return false;
}
// Tier preference can be a comma-delimited list of tiers, ordered by preference
Expand All @@ -65,7 +65,7 @@ protected boolean matches(String pattern, boolean caseInsensitive, SearchExecuti
@Override
public Query existsQuery(SearchExecutionContext context) {
String tierPreference = DataTierAllocationDecider.INDEX_ROUTING_PREFER_SETTING.get(context.getIndexSettings().getSettings());
if (tierPreference == null) {
if (Strings.hasText(tierPreference) == false) {
return new MatchNoDocsQuery();
}
return new MatchAllDocsQuery();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,34 @@ public void testWildcardQuery() {
assertEquals(new MatchAllDocsQuery(), ft.wildcardQuery("Data_Warm", null, true, createContext()));
assertEquals(new MatchNoDocsQuery(), ft.wildcardQuery("Data_Warm", null, false, createContext()));
assertEquals(new MatchNoDocsQuery(), ft.wildcardQuery("noSuchRole", null, createContext()));

assertEquals(new MatchNoDocsQuery(), ft.wildcardQuery("data_*", null, createContextWithoutSetting()));
assertEquals(new MatchNoDocsQuery(), ft.wildcardQuery("*", null, createContextWithoutSetting()));
}

public void testTermQuery() {
MappedFieldType ft = DataTierFieldMapper.DataTierFieldType.INSTANCE;
assertEquals(new MatchAllDocsQuery(), ft.termQuery("data_warm", createContext()));
assertEquals(new MatchNoDocsQuery(), ft.termQuery("data_hot", createContext()));
assertEquals(new MatchNoDocsQuery(), ft.termQuery("noSuchRole", createContext()));

assertEquals(new MatchNoDocsQuery(), ft.termQuery("data_warm", createContextWithoutSetting()));
assertEquals(new MatchNoDocsQuery(), ft.termQuery("", createContextWithoutSetting()));
}

public void testTermsQuery() {
MappedFieldType ft = DataTierFieldMapper.DataTierFieldType.INSTANCE;
assertEquals(new MatchAllDocsQuery(), ft.termsQuery(Arrays.asList("data_warm"), createContext()));
assertEquals(new MatchNoDocsQuery(), ft.termsQuery(Arrays.asList("data_cold", "data_frozen"), createContext()));

assertEquals(new MatchNoDocsQuery(), ft.termsQuery(Arrays.asList("data_warm"), createContextWithoutSetting()));
assertEquals(new MatchNoDocsQuery(), ft.termsQuery(Arrays.asList(""), createContextWithoutSetting()));
}

public void testExistsQuery() {
MappedFieldType ft = DataTierFieldMapper.DataTierFieldType.INSTANCE;
assertEquals(new MatchAllDocsQuery(), ft.existsQuery(createContext()));
assertEquals(new MatchNoDocsQuery(), ft.existsQuery(createContextWithoutSetting()));
}

public void testRegexpQuery() {
Expand Down Expand Up @@ -102,4 +117,18 @@ private SearchExecutionContext createContext() {
emptyMap()
);
}

private SearchExecutionContext createContextWithoutSetting() {
IndexMetadata indexMetadata = IndexMetadata.builder("index")
.settings(Settings.builder()
.put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
.build())
.numberOfShards(1)
.numberOfReplicas(0)
.build();
IndexSettings indexSettings = new IndexSettings(indexMetadata, Settings.EMPTY);
return new SearchExecutionContext(0, 0, indexSettings, null, null, null, null, null, null,
xContentRegistry(), writableRegistry(), null, null, System::currentTimeMillis, null,
value -> true, () -> true, null, emptyMap());
}
}

0 comments on commit 5bcd1f3

Please sign in to comment.