Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TEST] Fix snapshot restore exit condition #90696

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -194,13 +194,18 @@ public void testRestoreWithRemovedFileSettings() throws Exception {

private Tuple<CountDownLatch, AtomicLong> removedReservedClusterStateListener(String node) {
ClusterService clusterService = internalCluster().clusterService(node);
CountDownLatch savedClusterState = new CountDownLatch(1);
CountDownLatch savedClusterState = new CountDownLatch(2);
AtomicLong metadataVersion = new AtomicLong(-1);
clusterService.addListener(new ClusterStateListener() {
@Override
public void clusterChanged(ClusterChangedEvent event) {
ReservedStateMetadata reservedState = event.state().metadata().reservedStateMetadata().get(FileSettingsService.NAMESPACE);
// we first wait for reserved state version to become 0, then we expect to see it non-zero
if (reservedState != null && reservedState.version() == 0L) {
// don't remove the state listener yet, we need it to see the version non-zero
metadataVersion.set(event.state().metadata().version());
savedClusterState.countDown();
} else if (reservedState != null && reservedState.version() != 0L && savedClusterState.getCount() < 2) {
clusterService.removeListener(this);
metadataVersion.set(event.state().metadata().version());
savedClusterState.countDown();
Expand Down Expand Up @@ -279,7 +284,6 @@ public void testRestoreWithPersistedFileSettings() throws Exception {

logger.info("--> restore global state from the snapshot");
var removedReservedState = removedReservedClusterStateListener(masterNode);
var restoredReservedState = setupClusterStateListener(masterNode);

clusterAdmin().prepareRestoreSnapshot("test-repo", "test-snap").setRestoreGlobalState(true).setWaitForCompletion(true).get();

Expand All @@ -289,13 +293,13 @@ public void testRestoreWithPersistedFileSettings() throws Exception {
// cluster state for file based settings, but instead we reset the version to 0 and 'touch' the operator file
// so that it gets re-processed.
logger.info("--> reserved state version will be reset to 0, because of snapshot restore");
assertTrue(removedReservedState.v1().await(20, TimeUnit.SECONDS));
// double timeout, we restore snapshot then apply the file
assertTrue(removedReservedState.v1().await(40, TimeUnit.SECONDS));

logger.info("--> reserved state would be restored");
assertTrue(restoredReservedState.v1().await(20, TimeUnit.SECONDS));
logger.info("--> reserved state would be restored to non-zero version");

final ClusterStateResponse clusterStateResponse = clusterAdmin().state(
new ClusterStateRequest().metadata(true).waitForMetadataVersion(restoredReservedState.v2().get())
new ClusterStateRequest().metadata(true).waitForMetadataVersion(removedReservedState.v2().get())
).actionGet();

assertNotNull(clusterStateResponse.getState().metadata().reservedStateMetadata().get(FileSettingsService.NAMESPACE));
Expand Down