diff --git a/x-pack/plugin/snapshot-repo-test-kit/src/internalClusterTest/java/org/elasticsearch/repositories/blobstore/testkit/integrity/RepositoryVerifyIntegrityIT.java b/x-pack/plugin/snapshot-repo-test-kit/src/internalClusterTest/java/org/elasticsearch/repositories/blobstore/testkit/integrity/RepositoryVerifyIntegrityIT.java index 4b0e0fdbb0955..5725b065aeb06 100644 --- a/x-pack/plugin/snapshot-repo-test-kit/src/internalClusterTest/java/org/elasticsearch/repositories/blobstore/testkit/integrity/RepositoryVerifyIntegrityIT.java +++ b/x-pack/plugin/snapshot-repo-test-kit/src/internalClusterTest/java/org/elasticsearch/repositories/blobstore/testkit/integrity/RepositoryVerifyIntegrityIT.java @@ -344,16 +344,23 @@ public void testCorruption() throws IOException { ? equalTo(testContext.indexNames().size()) : lessThan(testContext.indexNames().size()) ); - assertThat(anomalies, not(empty())); + // Missing shard generation file is automatically repaired based on the shard snapshot files. + // See also BlobStoreRepository#buildBlobStoreIndexShardSnapshots + final boolean deletedShardGen = corruptedFileType == RepositoryFileType.SHARD_GENERATION && Files.exists(corruptedFile) == false; + assertThat(anomalies, deletedShardGen ? empty() : not(empty())); assertThat(responseObjectPath.evaluate("results.total_anomalies"), greaterThanOrEqualTo(anomalies.size())); - assertEquals("fail", responseObjectPath.evaluate("results.result")); + assertEquals(deletedShardGen ? "pass" : "fail", responseObjectPath.evaluate("results.result")); // remove permitted/expected anomalies to verify that no unexpected ones were seen switch (corruptedFileType) { case SNAPSHOT_INFO -> anomalies.remove("failed to load snapshot info"); case GLOBAL_METADATA -> anomalies.remove("failed to load global metadata"); case INDEX_METADATA -> anomalies.remove("failed to load index metadata"); - case SHARD_GENERATION -> anomalies.remove("failed to load shard generation"); + case SHARD_GENERATION -> { + if (deletedShardGen == false) { + anomalies.remove("failed to load shard generation"); + } + } case SHARD_SNAPSHOT_INFO -> anomalies.remove("failed to load shard snapshot"); case SHARD_DATA -> { anomalies.remove("missing blob");