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
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 elastic#36024
relates elastic#33194
  • Loading branch information
jakelandis committed Dec 10, 2018
1 parent 27487c9 commit 0c5750b
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ private DeprecationChecks() {
Collections.unmodifiableList(Arrays.asList(
IndexDeprecationChecks::oldIndicesCheck,
IndexDeprecationChecks::delimitedPayloadFilterCheck,
IndexDeprecationChecks::indexNameCheck
IndexDeprecationChecks::indexNameCheck,
IndexDeprecationChecks::shardOnStartupCheck
));

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
import org.elasticsearch.Version;
import org.elasticsearch.cluster.metadata.IndexMetaData;
import org.elasticsearch.cluster.metadata.MappingMetaData;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.index.IndexSettings;
import org.elasticsearch.index.analysis.AnalysisRegistry;
import org.elasticsearch.xpack.core.deprecation.DeprecationIssue;

Expand Down Expand Up @@ -116,4 +118,21 @@ static DeprecationIssue indexNameCheck(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 index.shard.check_on_startup 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 index.shard.check_on_startup = 'fix'. " +
"Valid values are 'true', 'false', and 'checksum'");
}
}
return null;
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.elasticsearch.Version;
import org.elasticsearch.cluster.metadata.IndexMetaData;
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 @@ -76,4 +77,29 @@ public void testIndexNameCheck(){
List<DeprecationIssue> noIssues = DeprecationChecks.filterChecks(INDEX_SETTINGS_CHECKS, c -> c.apply(goodIndex));
assertTrue(noIssues.isEmpty());
}

public void testShardOnStartupCheck() {
String indexName = randomAlphaOfLengthBetween(0, 10);
final IndexMetaData badIndex = IndexMetaData.builder(indexName)
.settings(settings(Version.CURRENT).put(IndexSettings.INDEX_CHECK_ON_STARTUP.getKey(), "fix"))
.numberOfShards(randomIntBetween(1, 100))
.numberOfReplicas(randomIntBetween(1, 15))
.build();
DeprecationIssue expected = new DeprecationIssue(DeprecationIssue.Level.WARNING,
"The value 'fix' for setting index.shard.check_on_startup 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 index.shard.check_on_startup = 'fix'. " +
"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 0c5750b

Please sign in to comment.