This is an automated email from the ASF dual-hosted git repository. tkalkirill pushed a commit to branch ignite-26095 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 5193e8518803506fe6d2eb4ee0aa1793ae6b9b5c Author: Kirill Tkalenko <[email protected]> AuthorDate: Fri Sep 19 15:47:09 2025 +0300 IGNITE-26095 wip --- ...RaftLogWithChangeReplicasCompatibilityTest.java | 22 +++++++++++++++------- .../ignite/internal/CompatibilityTestBase.java | 5 ++++- .../org/apache/ignite/internal/RunnerNode.java | 7 ++++--- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItPartitionRaftLogWithChangeReplicasCompatibilityTest.java b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItPartitionRaftLogWithChangeReplicasCompatibilityTest.java index a7eaecdfec9..a6788c19df7 100644 --- a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItPartitionRaftLogWithChangeReplicasCompatibilityTest.java +++ b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItPartitionRaftLogWithChangeReplicasCompatibilityTest.java @@ -21,21 +21,22 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasSize; import org.apache.ignite.Ignite; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedClass; import org.junit.jupiter.params.provider.MethodSource; -/** Partition Raft log compatibility tests when adding replicas. */ +/** Partition Raft log compatibility tests when changing replicas. */ @ParameterizedClass @MethodSource("baseVersions") -public class ItPartitionRaftLogWithAddReplicasCompatibilityTest extends CompatibilityTestBase { +public class ItPartitionRaftLogWithChangeReplicasCompatibilityTest extends CompatibilityTestBase { private static final String ZONE_NAME = "TEST_ZONE"; private static final String TABLE_NAME = "TEST_TABLE"; @Override protected int nodesCount() { - return 1; + return 3; } @Override @@ -45,7 +46,12 @@ public class ItPartitionRaftLogWithAddReplicasCompatibilityTest extends Compatib @Override protected void setupBaseVersion(Ignite baseIgnite) { - sql(baseIgnite, String.format("CREATE ZONE %s WITH PARTITIONS=1, REPLICAS=1, STORAGE_PROFILES='default'", ZONE_NAME)); + String createZoneDdl = String.format( + "CREATE ZONE %s WITH PARTITIONS=1, REPLICAS=1, STORAGE_PROFILES='default', DATA_NODES_FILTER='$[?(@.nodeIndex == \"0\")]'", + ZONE_NAME + ); + + sql(baseIgnite, createZoneDdl); sql(baseIgnite, String.format("CREATE TABLE %s(ID INT PRIMARY KEY, VAL VARCHAR) ZONE %s", TABLE_NAME, ZONE_NAME)); @@ -58,17 +64,19 @@ public class ItPartitionRaftLogWithAddReplicasCompatibilityTest extends Compatib }); } + @Disabled("https://issues.apache.org/jira/browse/IGNITE-26479") @Test void testIncreaseReplicas() throws Exception { cluster.stop(); - cluster.startEmbedded(nodesCount() + 2, true); + cluster.startEmbedded(nodesCount(), false); - sql(String.format("ALTER ZONE %s SET REPLICAS=3", ZONE_NAME)); + sql(String.format("ALTER ZONE %s SET REPLICAS=3, DATA_NODES_FILTER='$..*'", ZONE_NAME)); // Let's wait for replication to complete on other nodes. Thread.sleep(3_000); - assertThat(sql(String.format("SELECT * FROM %s", TABLE_NAME)), hasSize(10)); + assertThat(sql(cluster.node(1), String.format("SELECT * FROM %s", TABLE_NAME)), hasSize(10)); + assertThat(sql(cluster.node(2), String.format("SELECT * FROM %s", TABLE_NAME)), hasSize(10)); } } diff --git a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java index 948559e35f6..e95e2f67a86 100644 --- a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java +++ b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java @@ -66,7 +66,10 @@ public abstract class CompatibilityTestBase extends BaseIgniteAbstractTest { + " clientConnector.port: {},\n" + " clientConnector.sendServerExceptionStackTraceToClient: true,\n" + " rest.port: {},\n" - + " failureHandler.dumpThreadsOnFailure: false\n" + + " failureHandler.dumpThreadsOnFailure: false,\n" + + " nodeAttributes: {\n" + + " nodeAttributes: {nodeName: \"{}\", nodeIndex: \"{}\"}\n" + + " }\n" + "}"; // If there are no fields annotated with @Parameter, constructor injection will be used, which is incompatible with the diff --git a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/RunnerNode.java b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/RunnerNode.java index 9031d92ad11..6efa40e8541 100644 --- a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/RunnerNode.java +++ b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/RunnerNode.java @@ -81,7 +81,7 @@ public class RunnerNode { ) throws IOException { String nodeName = clusterConfiguration.nodeNamingStrategy().nodeName(clusterConfiguration, nodeIndex); Path workDir = clusterConfiguration.workDir().resolve(clusterConfiguration.clusterName()).resolve(nodeName); - String configStr = formatConfig(clusterConfiguration, nodeIndex, nodesCount); + String configStr = formatConfig(clusterConfiguration, nodeName, nodeIndex, nodesCount); Files.createDirectories(workDir); Path configPath = workDir.resolve(DEFAULT_CONFIG_NAME); @@ -179,14 +179,15 @@ public class RunnerNode { .collect(joining(", ")); } - private static String formatConfig(ClusterConfiguration clusterConfiguration, int nodeIndex, int nodesCount) { + private static String formatConfig(ClusterConfiguration clusterConfiguration, String nodeName, int nodeIndex, int nodesCount) { return IgniteStringFormatter.format( clusterConfiguration.defaultNodeBootstrapConfigTemplate(), clusterConfiguration.basePort() + nodeIndex, seedAddressesString(clusterConfiguration, nodesCount), clusterConfiguration.baseClientPort() + nodeIndex, clusterConfiguration.baseHttpPort() + nodeIndex, - clusterConfiguration.baseHttpsPort() + nodeIndex + nodeName, + nodeIndex ); }
