mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-17 10:25:15 +00:00
This addresses another race condition that could yield this test flaky. (cherry picked from commit d20d90aceb2b687239654d6f013f61f7f4cc1512) Signed-off-by: Andrei Dan <andrei.dan@elastic.co>
This commit is contained in:
parent
20f47b14b0
commit
5ca51562ec
@ -141,6 +141,9 @@ public abstract class IndexTemplateRegistry implements ClusterStateListener {
|
||||
creationCheck.set(false);
|
||||
logger.trace("not adding index template [{}] for [{}], because it already exists", templateName, getOrigin());
|
||||
}
|
||||
} else {
|
||||
logger.trace("skipping the creation of index template [{}] for [{}], because its creation is in progress",
|
||||
templateName, getOrigin());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -65,6 +65,7 @@ import static org.elasticsearch.xpack.core.ilm.LifecycleSettings.SLM_HISTORY_IND
|
||||
import static org.elasticsearch.xpack.core.slm.history.SnapshotLifecycleTemplateRegistry.SLM_POLICY_NAME;
|
||||
import static org.elasticsearch.xpack.core.slm.history.SnapshotLifecycleTemplateRegistry.SLM_TEMPLATE_NAME;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.greaterThan;
|
||||
import static org.hamcrest.Matchers.hasSize;
|
||||
import static org.hamcrest.Matchers.instanceOf;
|
||||
import static org.mockito.Mockito.mock;
|
||||
@ -137,10 +138,17 @@ public class SnapshotLifecycleTemplateRegistryTests extends ESTestCase {
|
||||
assertBusy(() -> assertThat(calledTimes.get(), equalTo(registry.getTemplateConfigs().size())));
|
||||
|
||||
calledTimes.set(0);
|
||||
// now delete one template from the cluster state and lets retry
|
||||
ClusterChangedEvent newEvent = createClusterChangedEvent(Collections.emptyList(), nodes);
|
||||
registry.clusterChanged(newEvent);
|
||||
assertBusy(() -> assertThat(calledTimes.get(), equalTo(1)));
|
||||
|
||||
// attempting to register the event multiple times as a race condition can yield this test flaky, namely:
|
||||
// when calling registry.clusterChanged(newEvent) the templateCreationsInProgress state that the IndexTemplateRegistry maintains
|
||||
// might've not yet been updated to reflect that the first template registration was complete, so a second template registration
|
||||
// will not be issued anymore, leaving calledTimes to 0
|
||||
assertBusy(() -> {
|
||||
// now delete one template from the cluster state and lets retry
|
||||
ClusterChangedEvent newEvent = createClusterChangedEvent(Collections.emptyList(), nodes);
|
||||
registry.clusterChanged(newEvent);
|
||||
assertThat(calledTimes.get(), greaterThan(1));
|
||||
});
|
||||
}
|
||||
|
||||
public void testThatNonExistingPoliciesAreAddedImmediately() throws Exception {
|
||||
|
Loading…
x
Reference in New Issue
Block a user