From c922743c5d5e62400303c81f577fdf0b430cf585 Mon Sep 17 00:00:00 2001 From: Armin Braun Date: Thu, 19 Sep 2019 18:52:35 +0200 Subject: [PATCH] Remove Bogus Test: testDeleteOrphanSnapshot (#46835) (#46874) This test is broken with a very low failure rate after recent changes. Particularly after #45689 which does not check for duplicate snapshot uuids during snapshot finalization any more. The check for duplicate uuids during finalization was removed conciously since it lead to problems during master failover. This test fails because it increments the repository state id in an unexpected manner now, starting from the impossible situation of having the same snapshot UUID for two different repository state ids. This situation can't normally be reached, but we manually crafted it here. This test didn't do anything before though, because the manually crafted cluster state would simply result in an error during finalization before and nothing but a normal snapshot delete would be tested. => removing this test here, it doesn't test anything. Closes #46843 --- .../SharedClusterSnapshotRestoreIT.java | 81 ------------------- 1 file changed, 81 deletions(-) diff --git a/server/src/test/java/org/elasticsearch/snapshots/SharedClusterSnapshotRestoreIT.java b/server/src/test/java/org/elasticsearch/snapshots/SharedClusterSnapshotRestoreIT.java index 139d8201cad..21136f6a97d 100644 --- a/server/src/test/java/org/elasticsearch/snapshots/SharedClusterSnapshotRestoreIT.java +++ b/server/src/test/java/org/elasticsearch/snapshots/SharedClusterSnapshotRestoreIT.java @@ -48,12 +48,8 @@ import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.action.support.master.AcknowledgedResponse; import org.elasticsearch.client.Client; import org.elasticsearch.cluster.ClusterState; -import org.elasticsearch.cluster.ClusterStateUpdateTask; import org.elasticsearch.cluster.RestoreInProgress; import org.elasticsearch.cluster.SnapshotsInProgress; -import org.elasticsearch.cluster.SnapshotsInProgress.Entry; -import org.elasticsearch.cluster.SnapshotsInProgress.ShardSnapshotStatus; -import org.elasticsearch.cluster.SnapshotsInProgress.ShardState; import org.elasticsearch.cluster.SnapshotsInProgress.State; import org.elasticsearch.cluster.block.ClusterBlocks; import org.elasticsearch.cluster.metadata.IndexMetaData; @@ -2623,83 +2619,6 @@ public class SharedClusterSnapshotRestoreIT extends AbstractSnapshotIntegTestCas restoreFut.get(); } - public void testDeleteOrphanSnapshot() throws Exception { - Client client = client(); - - logger.info("--> creating repository"); - final String repositoryName = "test-repo"; - assertAcked(client.admin().cluster().preparePutRepository(repositoryName) - .setType("mock").setSettings(Settings.builder() - .put("location", randomRepoPath()) - .put("compress", randomBoolean()) - .put("chunk_size", randomIntBetween(100, 1000), ByteSizeUnit.BYTES) - )); - - logger.info("--> create the index"); - final String idxName = "test-idx"; - createIndex(idxName); - ensureGreen(); - - ClusterService clusterService = internalCluster().getInstance(ClusterService.class, internalCluster().getMasterName()); - - final CountDownLatch countDownLatch = new CountDownLatch(1); - - logger.info("--> snapshot"); - final String snapshotName = "test-snap"; - CreateSnapshotResponse createSnapshotResponse = client.admin().cluster().prepareCreateSnapshot(repositoryName, snapshotName) - .setWaitForCompletion(true).setIndices(idxName).get(); - assertThat(createSnapshotResponse.getSnapshotInfo().successfulShards(), greaterThan(0)); - assertThat(createSnapshotResponse.getSnapshotInfo().successfulShards(), - equalTo(createSnapshotResponse.getSnapshotInfo().totalShards())); - - logger.info("--> emulate an orphan snapshot"); - RepositoriesService repositoriesService = internalCluster().getInstance(RepositoriesService.class, - internalCluster().getMasterName()); - final RepositoryData repositoryData = getRepositoryData(repositoriesService.repository(repositoryName)); - final IndexId indexId = repositoryData.resolveIndexId(idxName); - - clusterService.submitStateUpdateTask("orphan snapshot test", new ClusterStateUpdateTask() { - - @Override - public ClusterState execute(ClusterState currentState) { - // Simulate orphan snapshot - ImmutableOpenMap.Builder shards = ImmutableOpenMap.builder(); - shards.put(new ShardId(idxName, "_na_", 0), new ShardSnapshotStatus("unknown-node", ShardState.ABORTED, "aborted")); - shards.put(new ShardId(idxName, "_na_", 1), new ShardSnapshotStatus("unknown-node", ShardState.ABORTED, "aborted")); - shards.put(new ShardId(idxName, "_na_", 2), new ShardSnapshotStatus("unknown-node", ShardState.ABORTED, "aborted")); - List entries = new ArrayList<>(); - entries.add(new Entry(new Snapshot(repositoryName, - createSnapshotResponse.getSnapshotInfo().snapshotId()), - true, - false, - State.ABORTED, - Collections.singletonList(indexId), - System.currentTimeMillis(), - repositoryData.getGenId(), - shards.build(), - SnapshotInfoTests.randomUserMetadata())); - return ClusterState.builder(currentState) - .putCustom(SnapshotsInProgress.TYPE, new SnapshotsInProgress(Collections.unmodifiableList(entries))) - .build(); - } - - @Override - public void onFailure(String source, Exception e) { - fail(); - } - - @Override - public void clusterStateProcessed(String source, ClusterState oldState, final ClusterState newState) { - countDownLatch.countDown(); - } - }); - - countDownLatch.await(); - logger.info("--> try deleting the orphan snapshot"); - - assertAcked(client.admin().cluster().prepareDeleteSnapshot(repositoryName, snapshotName).get("10s")); - } - private boolean waitForIndex(final String index, TimeValue timeout) throws InterruptedException { return awaitBusy(() -> client().admin().indices().prepareExists(index).execute().actionGet().isExists(), timeout.millis(), TimeUnit.MILLISECONDS);