Skip to content

Commit

Permalink
deprecation info API: 'fix' value for index.shard.check_on_startup (#…
Browse files Browse the repository at this point in the history
…36458)

This commit adds support to check for a value of 'fix' for the index setting
`index.shard.check_on_startup` for the deprecation info API. This is no longer
a valid value for this setting.

relates #36024
relates #33194
  • Loading branch information
jakelandis committed Dec 13, 2018
1 parent 89469aa commit e171bd9
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ private DeprecationChecks() {
IndexDeprecationChecks::delimitedPayloadFilterCheck,
IndexDeprecationChecks::percolatorUnmappedFieldsAsStringCheck,
IndexDeprecationChecks::indexNameCheck,
IndexDeprecationChecks::nodeLeftDelayedTimeCheck
IndexDeprecationChecks::nodeLeftDelayedTimeCheck,
IndexDeprecationChecks::shardOnStartupCheck
));

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.IndexSettings;
import org.elasticsearch.index.analysis.AnalysisRegistry;
import org.elasticsearch.xpack.core.deprecation.DeprecationIssue;

Expand Down Expand Up @@ -149,4 +150,20 @@ static DeprecationIssue nodeLeftDelayedTimeCheck(IndexMetaData indexMetaData) {
}
return null;
}

static DeprecationIssue shardOnStartupCheck(IndexMetaData indexMetaData) {
String setting = IndexSettings.INDEX_CHECK_ON_STARTUP.getKey();
String value = indexMetaData.getSettings().get(setting);
if (Strings.isNullOrEmpty(value) == false) {
if ("fix".equalsIgnoreCase(value)) {
return new DeprecationIssue(DeprecationIssue.Level.WARNING,
"The value [fix] for setting [" + setting + "] is no longer valid",
"https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-7.0.html" +
"#_literal_fix_literal_value_for_literal_index_shard_check_on_startup_literal_is_removed",
"The index [" + indexMetaData.getIndex().getName() + "] has the setting [" + setting + "] set to value [fix]" +
", but [fix] is no longer a valid value. Valid values are true, false, and checksum");
}
}
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.elasticsearch.cluster.metadata.IndexMetaData;
import org.elasticsearch.cluster.routing.UnassignedInfo;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.index.IndexSettings;
import org.elasticsearch.test.ESTestCase;
import org.elasticsearch.test.VersionUtils;
import org.elasticsearch.xpack.core.deprecation.DeprecationInfoAction;
Expand Down Expand Up @@ -136,4 +137,29 @@ public void testNodeLeftDelayedTimeCheck() {
List<DeprecationIssue> noIssues = DeprecationChecks.filterChecks(INDEX_SETTINGS_CHECKS, c -> c.apply(goodIndex));
assertTrue(noIssues.isEmpty());
}

public void testShardOnStartupCheck() {
String indexName = randomAlphaOfLengthBetween(0, 10);
String setting = IndexSettings.INDEX_CHECK_ON_STARTUP.getKey();
final IndexMetaData badIndex = IndexMetaData.builder(indexName)
.settings(settings(Version.CURRENT).put(setting, "fix"))
.numberOfShards(randomIntBetween(1, 100))
.numberOfReplicas(randomIntBetween(1, 15))
.build();
DeprecationIssue expected = new DeprecationIssue(DeprecationIssue.Level.WARNING,
"The value [fix] for setting [" + setting + "] is no longer valid",
"https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-7.0.html" +
"#_literal_fix_literal_value_for_literal_index_shard_check_on_startup_literal_is_removed",
"The index [" + indexName + "] has the setting [" + setting + "] set to value [fix]" +
", but [fix] is no longer a valid value. Valid values are true, false, and checksum");
List<DeprecationIssue> issues = DeprecationChecks.filterChecks(INDEX_SETTINGS_CHECKS, c -> c.apply(badIndex));
assertEquals(singletonList(expected), issues);
final IndexMetaData goodIndex = IndexMetaData.builder(indexName)
.settings(settings(Version.CURRENT))
.numberOfShards(randomIntBetween(1, 100))
.numberOfReplicas(randomIntBetween(1, 15))
.build();
List<DeprecationIssue> noIssues = DeprecationChecks.filterChecks(INDEX_SETTINGS_CHECKS, c -> c.apply(goodIndex));
assertTrue(noIssues.isEmpty());
}
}

0 comments on commit e171bd9

Please sign in to comment.