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 <[email protected]>
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.
*