From f7467a7fe8b1dc5ddc28a655780438b61f2bf210 Mon Sep 17 00:00:00 2001 From: Armin Braun Date: Tue, 14 Apr 2020 19:22:26 +0200 Subject: [PATCH] Fix Cluster Stabilization in SnapshotResiliencyTests (#55159) (#55168) Just like in `AbstractCoordinatorTestCase` we can't just assume the cluster is stable once all the cluster states align since stray follower/leader check tasks could still hit us after a disconnect, causing future test operations to fail. => fixed by running all tasks in the possible time span of running into these checks before validating that cluster states align on all nodes to prevent this like we do in the coordinator tests. Closes #55103 --- .../elasticsearch/snapshots/SnapshotResiliencyTests.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java b/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java index b5ea4a821ba..ad551ad590c 100644 --- a/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java +++ b/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java @@ -98,6 +98,7 @@ import org.elasticsearch.cluster.SnapshotsInProgress; import org.elasticsearch.cluster.action.index.MappingUpdatedAction; import org.elasticsearch.cluster.action.index.NodeMappingRefreshAction; import org.elasticsearch.cluster.action.shard.ShardStateAction; +import org.elasticsearch.cluster.coordination.AbstractCoordinatorTestCase; import org.elasticsearch.cluster.coordination.ClusterBootstrapService; import org.elasticsearch.cluster.coordination.CoordinationMetadata.VotingConfiguration; import org.elasticsearch.cluster.coordination.CoordinationState; @@ -910,6 +911,11 @@ public class SnapshotResiliencyTests extends ESTestCase { } private void stabilize() { + final long endTime = deterministicTaskQueue.getCurrentTimeMillis() + AbstractCoordinatorTestCase.DEFAULT_STABILISATION_TIME; + while (deterministicTaskQueue.getCurrentTimeMillis() < endTime) { + deterministicTaskQueue.advanceTime(); + deterministicTaskQueue.runAllRunnableTasks(); + } runUntil( () -> { final Collection clusterStates =