diff --git a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java index d98be7bbbb97d..0fa318c097c92 100644 --- a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java +++ b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DeprecationChecks.java @@ -41,7 +41,8 @@ private DeprecationChecks() { IndexDeprecationChecks::oldIndicesCheck, IndexDeprecationChecks::translogRetentionSettingCheck, IndexDeprecationChecks::checkIndexDataPath, - IndexDeprecationChecks::storeTypeSettingCheck + IndexDeprecationChecks::storeTypeSettingCheck, + IndexDeprecationChecks::frozenIndexSettingCheck ); /** diff --git a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/IndexDeprecationChecks.java b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/IndexDeprecationChecks.java index 272b788be169c..3bd4e037e4833 100644 --- a/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/IndexDeprecationChecks.java +++ b/x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/IndexDeprecationChecks.java @@ -11,6 +11,7 @@ import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.index.IndexModule; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.engine.frozen.FrozenEngine; import org.elasticsearch.xpack.core.deprecation.DeprecationIssue; import java.util.Locale; @@ -73,4 +74,21 @@ static DeprecationIssue storeTypeSettingCheck(IndexMetadata indexMetadata) { } return null; } + + static DeprecationIssue frozenIndexSettingCheck(IndexMetadata indexMetadata) { + Boolean isIndexFrozen = FrozenEngine.INDEX_FROZEN.get(indexMetadata.getSettings()); + if (Boolean.TRUE.equals(isIndexFrozen)) { + String indexName = indexMetadata.getIndex().getName(); + return new DeprecationIssue( + DeprecationIssue.Level.WARNING, + "index [" + indexName + + "] is a frozen index. The frozen indices feature is deprecated and will be removed in a future version", + "https://www.elastic.co/guide/en/elasticsearch/reference/master/frozen-indices.html", + "Frozen indices no longer offer any advantages. Consider cold or frozen tiers in place of frozen indices.", + false, + null + ); + } + return null; + } } diff --git a/x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/IndexDeprecationChecksTests.java b/x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/IndexDeprecationChecksTests.java index b271ec46e4650..ff679ba82b712 100644 --- a/x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/IndexDeprecationChecksTests.java +++ b/x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/IndexDeprecationChecksTests.java @@ -12,6 +12,7 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexModule; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.engine.frozen.FrozenEngine; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.xpack.core.deprecation.DeprecationIssue; @@ -96,4 +97,20 @@ public void testSimpleFSSetting() { "as it offers superior or equivalent performance to [simplefs].", false, null) )); } + + public void testFrozenIndex() { + Settings.Builder settings = settings(Version.CURRENT); + settings.put(FrozenEngine.INDEX_FROZEN.getKey(), true); + IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build(); + List issues = DeprecationChecks.filterChecks(INDEX_SETTINGS_CHECKS, c -> c.apply(indexMetadata)); + assertThat(issues, contains( + new DeprecationIssue(DeprecationIssue.Level.WARNING, + "index [test] is a frozen index. The frozen indices feature is deprecated and will be removed in a future version", + "https://www.elastic.co/guide/en/elasticsearch/reference/master/frozen-indices.html", + "Frozen indices no longer offer any advantages. Consider cold or frozen tiers in place of frozen indices.", + false, + null + ) + )); + } }