This is an automated email from the ASF dual-hosted git repository. sk0x50 pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push: new 23d886ad2a IGNITE-20058 Flaky distribution zone tests were fixed by fixing order of the meta storage watches deploying and a distribution zone manager start (#2400) 23d886ad2a is described below commit 23d886ad2ab93dcc88f6899cd3e738d991f1979e Author: Sergey Uttsel <utt...@gmail.com> AuthorDate: Mon Aug 7 11:30:49 2023 +0300 IGNITE-20058 Flaky distribution zone tests were fixed by fixing order of the meta storage watches deploying and a distribution zone manager start (#2400) --- .../distributionzones/DistributionZoneManager.java | 14 +++++------ .../BaseDistributionZoneManagerTest.java | 7 +++--- .../DistributionZoneManagerAlterFilterTest.java | 5 ---- ...ibutionZoneManagerConfigurationChangesTest.java | 7 ++---- .../DistributionZonesTestUtil.java | 29 ---------------------- 5 files changed, 11 insertions(+), 51 deletions(-) diff --git a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java index adef274358..3bf87f766a 100644 --- a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java +++ b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java @@ -719,12 +719,12 @@ public class DistributionZoneManager implements IgniteComponent { if (newScaleDown != INFINITE_TIMER_VALUE) { Optional<Long> highestRevision = zoneState.highestRevision(false); - assert highestRevision.isEmpty() || ctx.storageRevision() >= highestRevision.get() : "Expected revision that " + assert highestRevision.isEmpty() || revision >= highestRevision.get() : "Expected revision that " + "is greater or equal to already seen meta storage events."; zoneState.rescheduleScaleDown( newScaleDown, - () -> saveDataNodesToMetaStorageOnScaleDown(zoneId, ctx.storageRevision()), + () -> saveDataNodesToMetaStorageOnScaleDown(zoneId, revision), zoneId ); } else { @@ -759,20 +759,18 @@ public class DistributionZoneManager implements IgniteComponent { VaultEntry filterUpdateRevision = vaultMgr.get(zonesFilterUpdateRevision()).join(); - long eventRevision = ctx.storageRevision(); - if (filterUpdateRevision != null) { // This means that we have already handled event with this revision. // It is possible when node was restarted after this listener completed, // but applied revision didn't have time to be propagated to the Vault. - if (bytesToLong(filterUpdateRevision.value()) >= eventRevision) { + if (bytesToLong(filterUpdateRevision.value()) >= revision) { return completedFuture(null); } } - vaultMgr.put(zonesFilterUpdateRevision(), longToBytes(eventRevision)).join(); + vaultMgr.put(zonesFilterUpdateRevision(), longToBytes(revision)).join(); - saveDataNodesToMetaStorageOnScaleUp(zoneId, eventRevision); + saveDataNodesToMetaStorageOnScaleUp(zoneId, revision); causalityDataNodesEngine.onUpdateFilter(revision, zoneId, filter); @@ -800,7 +798,7 @@ public class DistributionZoneManager implements IgniteComponent { zoneState.stopTimers(); - removeTriggerKeysAndDataNodes(zoneId, ctx.storageRevision()); + removeTriggerKeysAndDataNodes(zoneId, revision); causalityDataNodesEngine.onDelete(revision, zoneId); diff --git a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/BaseDistributionZoneManagerTest.java b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/BaseDistributionZoneManagerTest.java index 366e51b796..01d01f70d0 100644 --- a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/BaseDistributionZoneManagerTest.java +++ b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/BaseDistributionZoneManagerTest.java @@ -18,7 +18,6 @@ package org.apache.ignite.internal.distributionzones; import static java.util.concurrent.CompletableFuture.completedFuture; -import static org.apache.ignite.internal.distributionzones.DistributionZonesTestUtil.deployWatchesAndUpdateMetaStorageRevision; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; @@ -157,9 +156,9 @@ public class BaseDistributionZoneManagerTest extends BaseIgniteAbstractTest { generator.close(); } - void startDistributionZoneManager() throws Exception { - deployWatchesAndUpdateMetaStorageRevision(metaStorageManager); - + void startDistributionZoneManager() { distributionZoneManager.start(); + + metaStorageManager.deployWatches(); } } diff --git a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerAlterFilterTest.java b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerAlterFilterTest.java index cc7df1e0e1..bae86af25c 100644 --- a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerAlterFilterTest.java +++ b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerAlterFilterTest.java @@ -41,7 +41,6 @@ import org.apache.ignite.internal.cluster.management.topology.api.LogicalNode; import org.apache.ignite.internal.metastorage.server.If; import org.apache.ignite.network.ClusterNode; import org.apache.ignite.network.NetworkAddress; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -86,7 +85,6 @@ public class DistributionZoneManagerAlterFilterTest extends BaseDistributionZon * * @throws Exception If failed. */ - @Disabled("https://issues.apache.org/jira/browse/IGNITE-20058") @ParameterizedTest @MethodSource("provideArgumentsForFilterAlteringTests") void testAlterFilter(int zoneId, String zoneName) throws Exception { @@ -123,7 +121,6 @@ public class DistributionZoneManagerAlterFilterTest extends BaseDistributionZon * * @throws Exception If failed. */ - @Disabled("https://issues.apache.org/jira/browse/IGNITE-20058") @ParameterizedTest @MethodSource("provideArgumentsForFilterAlteringTests") void testAlterFilterToEmtpyNodes(int zoneId, String zoneName) throws Exception { @@ -159,7 +156,6 @@ public class DistributionZoneManagerAlterFilterTest extends BaseDistributionZon * * @throws Exception If failed. */ - @Disabled("https://issues.apache.org/jira/browse/IGNITE-20058") @ParameterizedTest @MethodSource("provideArgumentsForFilterAlteringTests") void testAlterFilterDoNotAffectScaleDown(int zoneId, String zoneName) throws Exception { @@ -217,7 +213,6 @@ public class DistributionZoneManagerAlterFilterTest extends BaseDistributionZon * * @throws Exception If failed. */ - @Disabled("https://issues.apache.org/jira/browse/IGNITE-20058") @ParameterizedTest @MethodSource("provideArgumentsForFilterAlteringTests") void testNodeAddedWhileAlteringFilter(int zoneId, String zoneName) throws Exception { diff --git a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerConfigurationChangesTest.java b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerConfigurationChangesTest.java index b93ed82253..ef7686c030 100644 --- a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerConfigurationChangesTest.java +++ b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerConfigurationChangesTest.java @@ -144,8 +144,6 @@ public class DistributionZoneManagerConfigurationChangesTest extends IgniteAbstr assertThat(vaultMgr.put(zonesLogicalTopologyVersionKey(), longToBytes(0)), willCompleteSuccessfully()); - metaStorageManager.put(zonesLogicalTopologyVersionKey(), longToBytes(0)); - Consumer<LongFunction<CompletableFuture<?>>> revisionUpdater = (LongFunction<CompletableFuture<?>> function) -> metaStorageManager.registerRevisionUpdateListener(function::apply); @@ -162,11 +160,10 @@ public class DistributionZoneManagerConfigurationChangesTest extends IgniteAbstr vaultMgr.start(); clusterCfgMgr.start(); metaStorageManager.start(); - - DistributionZonesTestUtil.deployWatchesAndUpdateMetaStorageRevision(metaStorageManager); - distributionZoneManager.start(); + metaStorageManager.deployWatches(); + clearInvocations(keyValueStorage); } diff --git a/modules/distribution-zones/src/testFixtures/java/org/apache/ignite/internal/distributionzones/DistributionZonesTestUtil.java b/modules/distribution-zones/src/testFixtures/java/org/apache/ignite/internal/distributionzones/DistributionZonesTestUtil.java index 06ea3a67fb..de7e649d8e 100644 --- a/modules/distribution-zones/src/testFixtures/java/org/apache/ignite/internal/distributionzones/DistributionZonesTestUtil.java +++ b/modules/distribution-zones/src/testFixtures/java/org/apache/ignite/internal/distributionzones/DistributionZonesTestUtil.java @@ -39,7 +39,6 @@ import static org.apache.ignite.internal.util.ByteUtils.longToBytes; import static org.apache.ignite.internal.util.ByteUtils.toBytes; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; -import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import java.util.Map; @@ -59,7 +58,6 @@ import org.apache.ignite.internal.distributionzones.DistributionZoneConfiguratio import org.apache.ignite.internal.metastorage.MetaStorageManager; import org.apache.ignite.internal.metastorage.dsl.Conditions; import org.apache.ignite.internal.metastorage.dsl.Iif; -import org.apache.ignite.internal.metastorage.dsl.Operations; import org.apache.ignite.internal.metastorage.dsl.StatementResult; import org.apache.ignite.internal.metastorage.server.KeyValueStorage; import org.apache.ignite.internal.schema.configuration.storage.DataStorageChange; @@ -310,33 +308,6 @@ public class DistributionZonesTestUtil { ); } - /** - * This method is used to initialize the meta storage revision before starting the distribution zone manager. - * TODO: IGNITE-19403 Watch listeners must be deployed after the zone manager starts. - * - * @param metaStorageManager Meta storage manager. - * @throws InterruptedException If thread was interrupted. - */ - public static void deployWatchesAndUpdateMetaStorageRevision(MetaStorageManager metaStorageManager) throws InterruptedException { - // Watches are deployed before distributionZoneManager start in order to update Meta Storage revision before - // distributionZoneManager's recovery. - CompletableFuture<Void> deployWatchesFut = metaStorageManager.deployWatches(); - - // Bump Meta Storage applied revision by modifying a fake key. DistributionZoneManager breaks on start if Vault is not empty, but - // Meta Storage revision is equal to 0. - var fakeKey = new ByteArray("foobar"); - - CompletableFuture<Boolean> invokeFuture = deployWatchesFut.thenCompose(unused -> metaStorageManager.invoke( - Conditions.notExists(fakeKey), - Operations.put(fakeKey, fakeKey.bytes()), - Operations.noop() - )); - - assertThat(invokeFuture, willBe(true)); - - assertTrue(waitForCondition(() -> metaStorageManager.appliedRevision() > 0, 10_000)); - } - /** * Sets logical topology to Vault. *