Skip to content

Commit 4b4be70

Browse files
authored
[8.x] Updates the deprecation info API to not warn about system indices and data streams (#122951) (#122970)
* Updates the deprecation info API to not warn about system indices and data streams (#122951) * removing use of nonexistent method
1 parent 4fdb85f commit 4b4be70

File tree

5 files changed

+89
-6
lines changed

5 files changed

+89
-6
lines changed

docs/changelog/122951.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 122951
2+
summary: Updates the deprecation info API to not warn about system indices and data
3+
streams
4+
area: Indices APIs
5+
type: bug
6+
issues: []

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/deprecation/DeprecatedIndexPredicate.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,15 @@ public static Predicate<Index> getReindexRequiredPredicate(Metadata metadata, bo
4949
*/
5050
public static boolean reindexRequired(IndexMetadata indexMetadata, boolean filterToBlockedStatus) {
5151
return creationVersionBeforeMinimumWritableVersion(indexMetadata)
52+
&& isNotSystem(indexMetadata)
5253
&& isNotSearchableSnapshot(indexMetadata)
5354
&& matchBlockedStatus(indexMetadata, filterToBlockedStatus);
5455
}
5556

57+
private static boolean isNotSystem(IndexMetadata indexMetadata) {
58+
return indexMetadata.isSystem() == false;
59+
}
60+
5661
private static boolean isNotSearchableSnapshot(IndexMetadata indexMetadata) {
5762
return indexMetadata.isSearchableSnapshot() == false;
5863
}

x-pack/plugin/deprecation/src/main/java/org/elasticsearch/xpack/deprecation/DataStreamDeprecationChecker.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,14 @@ public Map<String, List<DeprecationIssue>> check(ClusterState clusterState) {
7272
Map<String, List<DeprecationIssue>> dataStreamIssues = new HashMap<>();
7373
for (String dataStreamName : dataStreamNames) {
7474
DataStream dataStream = clusterState.metadata().dataStreams().get(dataStreamName);
75-
List<DeprecationIssue> issuesForSingleDataStream = DATA_STREAM_CHECKS.stream()
76-
.map(c -> c.apply(dataStream, clusterState))
77-
.filter(Objects::nonNull)
78-
.toList();
79-
if (issuesForSingleDataStream.isEmpty() == false) {
80-
dataStreamIssues.put(dataStreamName, issuesForSingleDataStream);
75+
if (dataStream.isSystem() == false) {
76+
List<DeprecationIssue> issuesForSingleDataStream = DATA_STREAM_CHECKS.stream()
77+
.map(c -> c.apply(dataStream, clusterState))
78+
.filter(Objects::nonNull)
79+
.toList();
80+
if (issuesForSingleDataStream.isEmpty() == false) {
81+
dataStreamIssues.put(dataStreamName, issuesForSingleDataStream);
82+
}
8183
}
8284
}
8385
return dataStreamIssues.isEmpty() ? Map.of() : dataStreamIssues;

x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/DataStreamDeprecationCheckerTests.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,4 +302,52 @@ public void testOldIndicesIgnoredWarningCheck() {
302302
assertThat(issuesByDataStream.get(dataStream.getName()), equalTo(List.of(expected)));
303303
}
304304

305+
public void testOldSystemDataStreamIgnored() {
306+
// We do not want system data streams coming back in the deprecation info API
307+
int oldIndexCount = randomIntBetween(1, 100);
308+
int newIndexCount = randomIntBetween(1, 100);
309+
List<Index> allIndices = new ArrayList<>();
310+
Map<String, IndexMetadata> nameToIndexMetadata = new HashMap<>();
311+
for (int i = 0; i < oldIndexCount; i++) {
312+
Settings.Builder settings = settings(IndexVersion.fromId(7170099));
313+
314+
String indexName = "old-data-stream-index-" + i;
315+
settings.put(MetadataIndexStateService.VERIFIED_READ_ONLY_SETTING.getKey(), true);
316+
317+
IndexMetadata oldIndexMetadata = IndexMetadata.builder(indexName)
318+
.settings(settings)
319+
.numberOfShards(1)
320+
.numberOfReplicas(0)
321+
.build();
322+
allIndices.add(oldIndexMetadata.getIndex());
323+
nameToIndexMetadata.put(oldIndexMetadata.getIndex().getName(), oldIndexMetadata);
324+
}
325+
for (int i = 0; i < newIndexCount; i++) {
326+
Index newIndex = createNewIndex(i, false, nameToIndexMetadata);
327+
allIndices.add(newIndex);
328+
}
329+
DataStream dataStream = new DataStream(
330+
randomAlphaOfLength(10),
331+
allIndices,
332+
randomNonNegativeLong(),
333+
Map.of(),
334+
true,
335+
false,
336+
true,
337+
randomBoolean(),
338+
randomFrom(IndexMode.values()),
339+
null,
340+
randomFrom(DataStreamOptions.EMPTY, DataStreamOptions.FAILURE_STORE_DISABLED, DataStreamOptions.FAILURE_STORE_ENABLED, null),
341+
List.of(),
342+
randomBoolean(),
343+
null
344+
);
345+
Metadata metadata = Metadata.builder()
346+
.indices(nameToIndexMetadata)
347+
.dataStreams(Map.of(dataStream.getName(), dataStream), Map.of())
348+
.build();
349+
ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT).metadata(metadata).build();
350+
assertThat(checker.check(clusterState), equalTo(Map.of()));
351+
}
352+
305353
}

x-pack/plugin/deprecation/src/test/java/org/elasticsearch/xpack/deprecation/IndexDeprecationCheckerTests.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,28 @@ public void testOldIndicesIgnoredWarningCheck() {
299299
assertEquals(List.of(expected), issuesByIndex.get("test"));
300300
}
301301

302+
public void testOldSystemIndicesIgnored() {
303+
// We do not want system indices coming back in the deprecation info API
304+
Settings.Builder settings = settings(OLD_VERSION).put(MetadataIndexStateService.VERIFIED_READ_ONLY_SETTING.getKey(), true);
305+
IndexMetadata indexMetadata = IndexMetadata.builder("test")
306+
.system(true)
307+
.settings(settings)
308+
.numberOfShards(1)
309+
.numberOfReplicas(0)
310+
.state(indexMetdataState)
311+
.build();
312+
ClusterState clusterState = ClusterState.builder(ClusterState.EMPTY_STATE)
313+
.metadata(Metadata.builder().put(indexMetadata, true))
314+
.blocks(clusterBlocksForIndices(indexMetadata))
315+
.build();
316+
Map<String, List<DeprecationIssue>> issuesByIndex = checker.check(
317+
clusterState,
318+
new DeprecationInfoAction.Request(TimeValue.THIRTY_SECONDS),
319+
emptyPrecomputedData
320+
);
321+
assertThat(issuesByIndex, equalTo(Map.of()));
322+
}
323+
302324
private IndexMetadata readonlyIndexMetadata(String indexName, IndexVersion indexVersion) {
303325
Settings.Builder settings = settings(indexVersion).put(MetadataIndexStateService.VERIFIED_READ_ONLY_SETTING.getKey(), true);
304326
return IndexMetadata.builder(indexName).settings(settings).numberOfShards(1).numberOfReplicas(0).state(indexMetdataState).build();

0 commit comments

Comments
 (0)