|
@@ -7,7 +7,11 @@
|
|
|
|
|
|
package org.elasticsearch.xpack.deprecation;
|
|
|
|
|
|
+import com.carrotsearch.randomizedtesting.annotations.Name;
|
|
|
+import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
|
|
|
+
|
|
|
import org.elasticsearch.cluster.ClusterState;
|
|
|
+import org.elasticsearch.cluster.block.ClusterBlocks;
|
|
|
import org.elasticsearch.cluster.metadata.DataStream;
|
|
|
import org.elasticsearch.cluster.metadata.DataStreamMetadata;
|
|
|
import org.elasticsearch.cluster.metadata.DataStreamOptions;
|
|
@@ -39,6 +43,17 @@ import static org.hamcrest.Matchers.hasItem;
|
|
|
|
|
|
public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
|
|
|
+ private final IndexMetadata.State indexMetdataState;
|
|
|
+
|
|
|
+ public IndexDeprecationCheckerTests(@Name("indexMetadataState") IndexMetadata.State indexMetdataState) {
|
|
|
+ this.indexMetdataState = indexMetdataState;
|
|
|
+ }
|
|
|
+
|
|
|
+ @ParametersFactory
|
|
|
+ public static List<Object[]> createParameters() {
|
|
|
+ return List.of(new Object[] { IndexMetadata.State.OPEN }, new Object[] { IndexMetadata.State.CLOSE });
|
|
|
+ }
|
|
|
+
|
|
|
private static final IndexVersion OLD_VERSION = IndexVersion.fromId(7170099);
|
|
|
|
|
|
private final IndexNameExpressionResolver indexNameExpressionResolver = TestIndexNameExpressionResolver.newInstance();
|
|
@@ -49,10 +64,11 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
.settings(settings(OLD_VERSION))
|
|
|
.numberOfShards(1)
|
|
|
.numberOfReplicas(0)
|
|
|
- .state(randomBoolean() ? IndexMetadata.State.OPEN : IndexMetadata.State.CLOSE) // does not matter if its open or closed
|
|
|
+ .state(indexMetdataState)
|
|
|
.build();
|
|
|
ClusterState clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
.metadata(Metadata.builder().put(indexMetadata, true))
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata))
|
|
|
.build();
|
|
|
DeprecationIssue expected = new DeprecationIssue(
|
|
|
DeprecationIssue.Level.CRITICAL,
|
|
@@ -73,7 +89,10 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
public void testOldTransformIndicesCheck() {
|
|
|
var checker = new IndexDeprecationChecker(indexNameExpressionResolver, Map.of("test", List.of("test-transform")));
|
|
|
var indexMetadata = indexMetadata("test", OLD_VERSION);
|
|
|
- var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
|
|
|
+ var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
+ .metadata(Metadata.builder().put(indexMetadata, true))
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata))
|
|
|
+ .build();
|
|
|
var expected = new DeprecationIssue(
|
|
|
DeprecationIssue.Level.CRITICAL,
|
|
|
"Old index with a compatibility version < 8.0",
|
|
@@ -92,7 +111,10 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
Map.of("test", List.of("test-transform1", "test-transform2"))
|
|
|
);
|
|
|
var indexMetadata = indexMetadata("test", OLD_VERSION);
|
|
|
- var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
|
|
|
+ var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
+ .metadata(Metadata.builder().put(indexMetadata, true))
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata))
|
|
|
+ .build();
|
|
|
var expected = new DeprecationIssue(
|
|
|
DeprecationIssue.Level.CRITICAL,
|
|
|
"Old index with a compatibility version < 8.0",
|
|
@@ -114,6 +136,7 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
var indexMetadata2 = indexMetadata("test2", OLD_VERSION);
|
|
|
var clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
.metadata(Metadata.builder().put(indexMetadata1, true).put(indexMetadata2, true))
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata1, indexMetadata2))
|
|
|
.build();
|
|
|
var expected = Map.of(
|
|
|
"test1",
|
|
@@ -144,7 +167,12 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
private IndexMetadata indexMetadata(String indexName, IndexVersion indexVersion) {
|
|
|
- return IndexMetadata.builder(indexName).settings(settings(indexVersion)).numberOfShards(1).numberOfReplicas(0).build();
|
|
|
+ return IndexMetadata.builder(indexName)
|
|
|
+ .settings(settings(indexVersion))
|
|
|
+ .numberOfShards(1)
|
|
|
+ .numberOfReplicas(0)
|
|
|
+ .state(indexMetdataState)
|
|
|
+ .build();
|
|
|
}
|
|
|
|
|
|
public void testOldIndicesCheckDataStreamIndex() {
|
|
@@ -152,6 +180,7 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
.settings(settings(OLD_VERSION).put("index.hidden", true))
|
|
|
.numberOfShards(1)
|
|
|
.numberOfReplicas(0)
|
|
|
+ .state(indexMetdataState)
|
|
|
.build();
|
|
|
DataStream dataStream = new DataStream(
|
|
|
randomAlphaOfLength(10),
|
|
@@ -183,6 +212,7 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
)
|
|
|
)
|
|
|
)
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata))
|
|
|
.build();
|
|
|
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
|
|
|
clusterState,
|
|
@@ -194,9 +224,15 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
public void testOldIndicesCheckSnapshotIgnored() {
|
|
|
Settings.Builder settings = settings(OLD_VERSION);
|
|
|
settings.put(INDEX_STORE_TYPE_SETTING.getKey(), SearchableSnapshotsSettings.SEARCHABLE_SNAPSHOT_STORE_TYPE);
|
|
|
- IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
|
|
|
+ IndexMetadata indexMetadata = IndexMetadata.builder("test")
|
|
|
+ .settings(settings)
|
|
|
+ .numberOfShards(1)
|
|
|
+ .numberOfReplicas(0)
|
|
|
+ .state(indexMetdataState)
|
|
|
+ .build();
|
|
|
ClusterState clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
.metadata(Metadata.builder().put(indexMetadata, true))
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata))
|
|
|
.build();
|
|
|
|
|
|
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
|
|
@@ -208,9 +244,15 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
|
|
|
public void testOldIndicesIgnoredWarningCheck() {
|
|
|
Settings.Builder settings = settings(OLD_VERSION).put(MetadataIndexStateService.VERIFIED_READ_ONLY_SETTING.getKey(), true);
|
|
|
- IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
|
|
|
+ IndexMetadata indexMetadata = IndexMetadata.builder("test")
|
|
|
+ .settings(settings)
|
|
|
+ .numberOfShards(1)
|
|
|
+ .numberOfReplicas(0)
|
|
|
+ .state(indexMetdataState)
|
|
|
+ .build();
|
|
|
ClusterState clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
.metadata(Metadata.builder().put(indexMetadata, true))
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata))
|
|
|
.build();
|
|
|
DeprecationIssue expected = new DeprecationIssue(
|
|
|
DeprecationIssue.Level.WARNING,
|
|
@@ -232,8 +274,16 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
Settings.Builder settings = settings(IndexVersion.current());
|
|
|
settings.put(IndexSettings.INDEX_TRANSLOG_RETENTION_AGE_SETTING.getKey(), randomPositiveTimeValue());
|
|
|
settings.put(IndexSettings.INDEX_TRANSLOG_RETENTION_SIZE_SETTING.getKey(), between(1, 1024) + "b");
|
|
|
- IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
|
|
|
- ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
|
|
|
+ IndexMetadata indexMetadata = IndexMetadata.builder("test")
|
|
|
+ .settings(settings)
|
|
|
+ .numberOfShards(1)
|
|
|
+ .numberOfReplicas(0)
|
|
|
+ .state(indexMetdataState)
|
|
|
+ .build();
|
|
|
+ ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
+ .metadata(Metadata.builder().put(indexMetadata, true))
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata))
|
|
|
+ .build();
|
|
|
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
|
|
|
state,
|
|
|
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
|
|
@@ -267,8 +317,16 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
settings.put(IndexSettings.INDEX_TRANSLOG_RETENTION_SIZE_SETTING.getKey(), between(1, 1024) + "b");
|
|
|
settings.put(IndexSettings.INDEX_SOFT_DELETES_SETTING.getKey(), false);
|
|
|
}
|
|
|
- IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
|
|
|
- ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
|
|
|
+ IndexMetadata indexMetadata = IndexMetadata.builder("test")
|
|
|
+ .settings(settings)
|
|
|
+ .numberOfShards(1)
|
|
|
+ .numberOfReplicas(0)
|
|
|
+ .state(indexMetdataState)
|
|
|
+ .build();
|
|
|
+ ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
+ .metadata(Metadata.builder().put(indexMetadata, true))
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata))
|
|
|
+ .build();
|
|
|
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
|
|
|
state,
|
|
|
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
|
|
@@ -279,8 +337,16 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
public void testIndexDataPathSetting() {
|
|
|
Settings.Builder settings = settings(IndexVersion.current());
|
|
|
settings.put(IndexMetadata.INDEX_DATA_PATH_SETTING.getKey(), createTempDir());
|
|
|
- IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
|
|
|
- ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
|
|
|
+ IndexMetadata indexMetadata = IndexMetadata.builder("test")
|
|
|
+ .settings(settings)
|
|
|
+ .numberOfShards(1)
|
|
|
+ .numberOfReplicas(0)
|
|
|
+ .state(indexMetdataState)
|
|
|
+ .build();
|
|
|
+ ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
+ .metadata(Metadata.builder().put(indexMetadata, true))
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata))
|
|
|
+ .build();
|
|
|
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
|
|
|
state,
|
|
|
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
|
|
@@ -305,8 +371,16 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
public void testSimpleFSSetting() {
|
|
|
Settings.Builder settings = settings(IndexVersion.current());
|
|
|
settings.put(INDEX_STORE_TYPE_SETTING.getKey(), "simplefs");
|
|
|
- IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
|
|
|
- ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
|
|
|
+ IndexMetadata indexMetadata = IndexMetadata.builder("test")
|
|
|
+ .settings(settings)
|
|
|
+ .numberOfShards(1)
|
|
|
+ .numberOfReplicas(0)
|
|
|
+ .state(indexMetdataState)
|
|
|
+ .build();
|
|
|
+ ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
+ .metadata(Metadata.builder().put(indexMetadata, true))
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata))
|
|
|
+ .build();
|
|
|
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
|
|
|
state,
|
|
|
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
|
|
@@ -370,8 +444,12 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
.numberOfShards(1)
|
|
|
.numberOfReplicas(1)
|
|
|
.putMapping(simpleMapping)
|
|
|
+ .state(indexMetdataState)
|
|
|
+ .build();
|
|
|
+ ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
+ .metadata(Metadata.builder().put(simpleIndex, true))
|
|
|
+ .blocks(clusterBlocksForIndices(simpleIndex))
|
|
|
.build();
|
|
|
- ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(simpleIndex, true)).build();
|
|
|
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
|
|
|
state,
|
|
|
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
|
|
@@ -393,8 +471,16 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
String filter = randomFrom("include", "exclude", "require");
|
|
|
String tier = randomFrom("hot", "warm", "cold", "frozen");
|
|
|
settings.put("index.routing.allocation." + filter + ".data", tier);
|
|
|
- IndexMetadata indexMetadata = IndexMetadata.builder("test").settings(settings).numberOfShards(1).numberOfReplicas(0).build();
|
|
|
- ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE).metadata(Metadata.builder().put(indexMetadata, true)).build();
|
|
|
+ IndexMetadata indexMetadata = IndexMetadata.builder("test")
|
|
|
+ .settings(settings)
|
|
|
+ .numberOfShards(1)
|
|
|
+ .numberOfReplicas(0)
|
|
|
+ .state(indexMetdataState)
|
|
|
+ .build();
|
|
|
+ ClusterState state = ClusterState.builder(ClusterState.EMPTY_STATE)
|
|
|
+ .metadata(Metadata.builder().put(indexMetadata, true))
|
|
|
+ .blocks(clusterBlocksForIndices(indexMetadata))
|
|
|
+ .build();
|
|
|
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
|
|
|
state,
|
|
|
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS)
|
|
@@ -415,4 +501,14 @@ public class IndexDeprecationCheckerTests extends ESTestCase {
|
|
|
)
|
|
|
);
|
|
|
}
|
|
|
+
|
|
|
+ private ClusterBlocks clusterBlocksForIndices(IndexMetadata... indicesMetadatas) {
|
|
|
+ ClusterBlocks.Builder builder = ClusterBlocks.builder();
|
|
|
+ for (IndexMetadata indexMetadata : indicesMetadatas) {
|
|
|
+ if (indexMetadata.getState() == IndexMetadata.State.CLOSE) {
|
|
|
+ builder.addIndexBlock(indexMetadata.getIndex().getName(), MetadataIndexStateService.INDEX_CLOSED_BLOCK);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return builder.build();
|
|
|
+ }
|
|
|
}
|