|  | 
| 13 | 13 | import org.elasticsearch.cluster.metadata.DataStreamOptions; | 
| 14 | 14 | import org.elasticsearch.cluster.metadata.IndexMetadata; | 
| 15 | 15 | import org.elasticsearch.cluster.metadata.Metadata; | 
|  | 16 | +import org.elasticsearch.cluster.metadata.MetadataIndexStateService; | 
| 16 | 17 | import org.elasticsearch.common.settings.Settings; | 
| 17 | 18 | import org.elasticsearch.index.Index; | 
| 18 | 19 | import org.elasticsearch.index.IndexMode; | 
| @@ -224,4 +225,81 @@ private Index createIndex( | 
| 224 | 225 |         nameToIndexMetadata.put(indexMetadata.getIndex().getName(), indexMetadata); | 
| 225 | 226 |         return indexMetadata.getIndex(); | 
| 226 | 227 |     } | 
|  | 228 | + | 
|  | 229 | +    public void testOldIndicesIgnoredWarningCheck() { | 
|  | 230 | +        int oldIndexCount = randomIntBetween(1, 100); | 
|  | 231 | +        int newIndexCount = randomIntBetween(1, 100); | 
|  | 232 | + | 
|  | 233 | +        List<Index> allIndices = new ArrayList<>(); | 
|  | 234 | +        Map<String, IndexMetadata> nameToIndexMetadata = new HashMap<>(); | 
|  | 235 | +        Set<String> expectedIndices = new HashSet<>(); | 
|  | 236 | + | 
|  | 237 | +        for (int i = 0; i < oldIndexCount; i++) { | 
|  | 238 | +            Settings.Builder settings = settings(IndexVersion.fromId(7170099)); | 
|  | 239 | + | 
|  | 240 | +            String indexName = "old-data-stream-index-" + i; | 
|  | 241 | +            settings.put(MetadataIndexStateService.VERIFIED_READ_ONLY_SETTING.getKey(), true); | 
|  | 242 | +            expectedIndices.add(indexName); | 
|  | 243 | + | 
|  | 244 | +            Settings.Builder settingsBuilder = settings; | 
|  | 245 | +            IndexMetadata oldIndexMetadata = IndexMetadata.builder(indexName) | 
|  | 246 | +                .settings(settingsBuilder) | 
|  | 247 | +                .numberOfShards(1) | 
|  | 248 | +                .numberOfReplicas(0) | 
|  | 249 | +                .build(); | 
|  | 250 | +            allIndices.add(oldIndexMetadata.getIndex()); | 
|  | 251 | +            nameToIndexMetadata.put(oldIndexMetadata.getIndex().getName(), oldIndexMetadata); | 
|  | 252 | +        } | 
|  | 253 | + | 
|  | 254 | +        for (int i = 0; i < newIndexCount; i++) { | 
|  | 255 | +            Settings.Builder settingsBuilder = settings(IndexVersion.current()); | 
|  | 256 | +            IndexMetadata newIndexMetadata = IndexMetadata.builder("new-data-stream-index-" + i) | 
|  | 257 | +                .settings(settingsBuilder) | 
|  | 258 | +                .numberOfShards(1) | 
|  | 259 | +                .numberOfReplicas(0) | 
|  | 260 | +                .build(); | 
|  | 261 | +            allIndices.add(newIndexMetadata.getIndex()); | 
|  | 262 | +            nameToIndexMetadata.put(newIndexMetadata.getIndex().getName(), newIndexMetadata); | 
|  | 263 | +        } | 
|  | 264 | + | 
|  | 265 | +        DataStream dataStream = new DataStream( | 
|  | 266 | +            randomAlphaOfLength(10), | 
|  | 267 | +            allIndices, | 
|  | 268 | +            randomNegativeLong(), | 
|  | 269 | +            Map.of(), | 
|  | 270 | +            randomBoolean(), | 
|  | 271 | +            false, | 
|  | 272 | +            false, | 
|  | 273 | +            randomBoolean(), | 
|  | 274 | +            randomFrom(IndexMode.values()), | 
|  | 275 | +            null, | 
|  | 276 | +            randomFrom(DataStreamOptions.EMPTY, DataStreamOptions.FAILURE_STORE_DISABLED, DataStreamOptions.FAILURE_STORE_ENABLED, null), | 
|  | 277 | +            List.of(), | 
|  | 278 | +            randomBoolean(), | 
|  | 279 | +            null | 
|  | 280 | +        ); | 
|  | 281 | + | 
|  | 282 | +        Metadata metadata = Metadata.builder().indices(nameToIndexMetadata).build(); | 
|  | 283 | +        ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT).metadata(metadata).build(); | 
|  | 284 | + | 
|  | 285 | +        DeprecationIssue expected = new DeprecationIssue( | 
|  | 286 | +            DeprecationIssue.Level.WARNING, | 
|  | 287 | +            "Old data stream with a compatibility version < 9.0 Have Been Ignored", | 
|  | 288 | +            "https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-9.0.html", | 
|  | 289 | +            "This data stream has backing indices that were created before Elasticsearch 9.0.0 and have been marked as OK to" | 
|  | 290 | +                + "become read-only after upgrade", | 
|  | 291 | +            false, | 
|  | 292 | +            ofEntries( | 
|  | 293 | +                entry("reindex_required", true), | 
|  | 294 | +                entry("total_backing_indices", oldIndexCount + newIndexCount), | 
|  | 295 | +                entry("ignored_indices_requiring_upgrade_count", expectedIndices.size()), | 
|  | 296 | +                entry("ignored_indices_requiring_upgrade", expectedIndices) | 
|  | 297 | +            ) | 
|  | 298 | +        ); | 
|  | 299 | + | 
|  | 300 | +        List<DeprecationIssue> issues = DeprecationChecks.filterChecks(DATA_STREAM_CHECKS, c -> c.apply(dataStream, clusterState)); | 
|  | 301 | + | 
|  | 302 | +        assertThat(issues, equalTo(singletonList(expected))); | 
|  | 303 | +    } | 
|  | 304 | + | 
| 227 | 305 | } | 
0 commit comments