This is an automated email from the ASF dual-hosted git repository.
vpyatkov 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 1469191211 IGNITE-22275 forbid to alter partitions number. (#3838)
1469191211 is described below
commit 146919121187e21053624b432ef7619172afe6d3
Author: Mirza Aliev <[email protected]>
AuthorDate: Wed Jun 5 15:00:27 2024 +0400
IGNITE-22275 forbid to alter partitions number. (#3838)
---
.../catalog/CatalogParamsValidationUtils.java | 11 +++++++
.../catalog/commands/AlterZoneCommand.java | 4 +--
.../ignite/internal/catalog/CatalogZoneTest.java | 3 +-
.../commands/AlterZoneCommandValidationTest.java | 24 ++-------------
.../utils/CatalogAlterZoneEventListenerTest.java | 2 ++
.../index/IndexAvailabilityControllerTest.java | 4 +++
.../ignite/internal/sql/engine/ItZoneDdlTest.java | 35 ++++++++++++++++++++++
.../DistributionZoneSqlToCommandConverterTest.java | 2 --
.../ignite/internal/rebalance/ItRebalanceTest.java | 8 ++---
9 files changed, 61 insertions(+), 32 deletions(-)
diff --git
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogParamsValidationUtils.java
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogParamsValidationUtils.java
index fcb5dd3b76..274644240c 100644
---
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogParamsValidationUtils.java
+++
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogParamsValidationUtils.java
@@ -119,6 +119,17 @@ public class CatalogParamsValidationUtils {
}
}
+ /**
+ * Validates that given partitions number is null, meaning that altering
of a partitions number is forbidden.
+ *
+ * @param partitions Partitions number to validate.
+ */
+ public static void validatePartition(@Nullable Integer partitions) {
+ if (partitions != null) {
+ throw new CatalogValidationException("Partitions number cannot be
altered");
+ }
+ }
+
/**
* Validates that given schema doesn't contain any relation with specified
name.
*
diff --git
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommand.java
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommand.java
index 3b5b7e4363..31b88c1f28 100644
---
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommand.java
+++
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommand.java
@@ -18,10 +18,10 @@
package org.apache.ignite.internal.catalog.commands;
import static
org.apache.ignite.internal.catalog.CatalogParamsValidationUtils.validateField;
+import static
org.apache.ignite.internal.catalog.CatalogParamsValidationUtils.validatePartition;
import static
org.apache.ignite.internal.catalog.CatalogParamsValidationUtils.validateZoneDataNodesAutoAdjustParametersCompatibility;
import static
org.apache.ignite.internal.catalog.CatalogParamsValidationUtils.validateZoneFilter;
import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.INFINITE_TIMER_VALUE;
-import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.MAX_PARTITION_COUNT;
import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.fromParams;
import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.zoneOrThrow;
@@ -144,7 +144,7 @@ public class AlterZoneCommand extends AbstractZoneCommand {
}
private void validate() {
- validateField(partitions, 1, MAX_PARTITION_COUNT, "Invalid number of
partitions");
+ validatePartition(partitions);
validateField(replicas, 1, null, "Invalid number of replicas");
validateField(dataNodesAutoAdjust, 0, null, "Invalid data nodes auto
adjust");
validateField(dataNodesAutoAdjustScaleUp, 0, null, "Invalid data nodes
auto adjust scale up");
diff --git
a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogZoneTest.java
b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogZoneTest.java
index 4975c64162..ebf80a0fff 100644
---
a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogZoneTest.java
+++
b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogZoneTest.java
@@ -344,7 +344,6 @@ public class CatalogZoneTest extends BaseCatalogManagerTest
{
CatalogCommand alterCmd = AlterZoneCommand.builder()
.zoneName(zoneName)
- .partitions(10)
.replicas(2)
.dataNodesAutoAdjustScaleUp(3)
.dataNodesAutoAdjustScaleDown(4)
@@ -361,7 +360,7 @@ public class CatalogZoneTest extends BaseCatalogManagerTest
{
assertSame(zone, manager.zone(zone.id(), clock.nowLong()));
assertEquals(zoneName, zone.name());
- assertEquals(10, zone.partitions());
+ assertEquals(42, zone.partitions());
assertEquals(2, zone.replicas());
assertEquals(INFINITE_TIMER_VALUE, zone.dataNodesAutoAdjust());
assertEquals(3, zone.dataNodesAutoAdjustScaleUp());
diff --git
a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommandValidationTest.java
b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommandValidationTest.java
index 1877a9a4c5..f7bacce84b 100644
---
a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommandValidationTest.java
+++
b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommandValidationTest.java
@@ -19,11 +19,9 @@ package org.apache.ignite.internal.catalog.commands;
import static
org.apache.ignite.internal.catalog.CatalogTestUtils.alterZoneBuilder;
import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_FILTER;
-import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_PARTITION_COUNT;
import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_REPLICA_COUNT;
import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.IMMEDIATE_TIMER_VALUE;
import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.INFINITE_TIMER_VALUE;
-import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.MAX_PARTITION_COUNT;
import static
org.apache.ignite.internal.testframework.IgniteTestUtils.assertThrows;
import org.apache.ignite.internal.catalog.CatalogCommand;
@@ -64,27 +62,9 @@ public class AlterZoneCommandValidationTest extends
AbstractCommandValidationTes
void zonePartitions() {
assertThrows(
CatalogValidationException.class,
- () -> alterZoneBuilder(ZONE_NAME).partitions(-1).build(),
- "Invalid number of partitions"
+ () -> alterZoneBuilder(ZONE_NAME).partitions(42).build(),
+ "Partitions number cannot be altered"
);
-
- assertThrows(
- CatalogValidationException.class,
- () -> alterZoneBuilder(ZONE_NAME).partitions(0).build(),
- "Invalid number of partitions"
- );
-
- assertThrows(
- CatalogValidationException.class,
- () ->
alterZoneBuilder(ZONE_NAME).partitions(MAX_PARTITION_COUNT + 1).build(),
- "Invalid number of partitions"
- );
-
- // Let's check the success cases.
- alterZoneBuilder(ZONE_NAME).partitions(1).build();
- alterZoneBuilder(ZONE_NAME).partitions(MAX_PARTITION_COUNT).build();
- alterZoneBuilder(ZONE_NAME).partitions(10).build();
-
alterZoneBuilder(ZONE_NAME).partitions(DEFAULT_PARTITION_COUNT).build();
}
@Test
diff --git
a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/utils/CatalogAlterZoneEventListenerTest.java
b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/utils/CatalogAlterZoneEventListenerTest.java
index 1eaee7414e..e9cec6d862 100644
---
a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/utils/CatalogAlterZoneEventListenerTest.java
+++
b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/utils/CatalogAlterZoneEventListenerTest.java
@@ -29,6 +29,7 @@ import java.util.concurrent.CompletableFuture;
import org.apache.ignite.internal.catalog.BaseCatalogManagerTest;
import org.apache.ignite.internal.catalog.descriptors.CatalogZoneDescriptor;
import org.apache.ignite.internal.catalog.events.AlterZoneEventParameters;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
/** For {@link CatalogAlterZoneEventListener} testing. */
@@ -55,6 +56,7 @@ public class CatalogAlterZoneEventListenerTest extends
BaseCatalogManagerTest {
}
@Test
+ @Disabled("https://issues.apache.org/jira/browse/IGNITE-22374")
void testOnUpdatePartitions() {
CompletableFuture<Void> onZoneUpdateFuture = new CompletableFuture<>();
CompletableFuture<Void> onPartitionsUpdateFuture = new
CompletableFuture<>();
diff --git
a/modules/index/src/test/java/org/apache/ignite/internal/index/IndexAvailabilityControllerTest.java
b/modules/index/src/test/java/org/apache/ignite/internal/index/IndexAvailabilityControllerTest.java
index 7a43cd58f1..6c5c38da23 100644
---
a/modules/index/src/test/java/org/apache/ignite/internal/index/IndexAvailabilityControllerTest.java
+++
b/modules/index/src/test/java/org/apache/ignite/internal/index/IndexAvailabilityControllerTest.java
@@ -68,6 +68,7 @@ import
org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
import org.apache.ignite.network.ClusterNode;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
/** For {@link IndexAvailabilityController} testing. */
@@ -182,6 +183,7 @@ public class IndexAvailabilityControllerTest extends
BaseIgniteAbstractTest {
}
@Test
+ @Disabled("https://issues.apache.org/jira/browse/IGNITE-22374")
void testMetastoreKeysAfterIndexCreateForOnlyOnePartition() throws
Exception {
changePartitionCountInCatalog(1);
@@ -189,6 +191,7 @@ public class IndexAvailabilityControllerTest extends
BaseIgniteAbstractTest {
}
@Test
+ @Disabled("https://issues.apache.org/jira/browse/IGNITE-22374")
void testMetastoreKeysAfterIndexBuildingForOnlyOnePartition() throws
Exception {
changePartitionCountInCatalog(1);
@@ -262,6 +265,7 @@ public class IndexAvailabilityControllerTest extends
BaseIgniteAbstractTest {
}
@Test
+ @Disabled("https://issues.apache.org/jira/browse/IGNITE-22374")
void testMetastoreKeysAfterDropIndexForOnlyOnePartition() throws Exception
{
changePartitionCountInCatalog(1);
diff --git
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
index 5739c167bb..336a0d91da 100644
---
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
+++
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.sql.engine;
import static
org.apache.ignite.internal.catalog.CatalogService.DEFAULT_STORAGE_PROFILE;
+import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_PARTITION_COUNT;
import static org.apache.ignite.internal.lang.IgniteStringFormatter.format;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
@@ -28,6 +29,7 @@ import
org.apache.ignite.internal.ClusterPerClassIntegrationTest;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.catalog.Catalog;
import org.apache.ignite.internal.catalog.CatalogManager;
+import org.apache.ignite.internal.catalog.CatalogValidationException;
import
org.apache.ignite.internal.catalog.DistributionZoneCantBeDroppedValidationException;
import
org.apache.ignite.internal.catalog.DistributionZoneExistsValidationException;
import
org.apache.ignite.internal.catalog.DistributionZoneNotFoundValidationException;
@@ -173,6 +175,39 @@ public class ItZoneDdlTest extends
ClusterPerClassIntegrationTest {
tryToAlterZone("not_existing_" + ZONE_NAME, 200, false);
}
+ @Test
+ public void testAlterZoneWithPartition() {
+ sql(String.format("CREATE ZONE %s WITH STORAGE_PROFILES='%s',
PARTITIONS = 11", ZONE_NAME, DEFAULT_STORAGE_PROFILE));
+
+ IgniteTestUtils.assertThrowsWithCause(
+ () -> sql(String.format("ALTER ZONE %s SET PARTITIONS = 111",
ZONE_NAME)),
+ CatalogValidationException.class,
+ "Partitions number cannot be altered"
+ );
+ }
+
+ @Test
+ public void testAlterZoneWithPartitionWhenPartitionIsNotSetWhenCreate() {
+ sql(String.format("CREATE ZONE %s WITH STORAGE_PROFILES='%s'",
ZONE_NAME, DEFAULT_STORAGE_PROFILE));
+
+ IgniteTestUtils.assertThrowsWithCause(
+ () -> sql(String.format("ALTER ZONE %s SET PARTITIONS = %s",
ZONE_NAME, DEFAULT_PARTITION_COUNT + 123)),
+ CatalogValidationException.class,
+ "Partitions number cannot be altered"
+ );
+ }
+
+ @Test
+ public void testAlterZoneWithTheSamePartition() {
+ sql(String.format("CREATE ZONE %s WITH STORAGE_PROFILES='%s',
PARTITIONS = 11", ZONE_NAME, DEFAULT_STORAGE_PROFILE));
+
+ IgniteTestUtils.assertThrowsWithCause(
+ () -> sql(String.format("ALTER ZONE %s SET PARTITIONS = 11",
ZONE_NAME)),
+ CatalogValidationException.class,
+ "Partitions number cannot be altered"
+ );
+ }
+
@Test
@SuppressWarnings("ThrowableNotThrown")
public void testChangeDefaultZone() {
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DistributionZoneSqlToCommandConverterTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DistributionZoneSqlToCommandConverterTest.java
index dc52879dff..9f3f468978 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DistributionZoneSqlToCommandConverterTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DistributionZoneSqlToCommandConverterTest.java
@@ -239,7 +239,6 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
{
SqlNode node = parse("ALTER ZONE test SET "
+ "replicas=3, "
- + "partitions=8, "
+ "data_nodes_filter='$[?(@.region == \"US\")]', "
+ "data_nodes_auto_adjust=300");
@@ -257,7 +256,6 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
assertThat(desc.name(), equalTo("TEST"));
assertThat(desc.replicas(), equalTo(3));
- assertThat(desc.partitions(), equalTo(8));
assertThat(desc.filter(), equalTo("$[?(@.region == \"US\")]"));
assertThat(desc.dataNodesAutoAdjust(), equalTo(300));
}
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceTest.java
index 97a81caf0f..9d41c32b1b 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceTest.java
@@ -188,7 +188,7 @@ public class ItRebalanceTest extends IgniteIntegrationTest {
n -> n.dropMessages((nodeName, msg) -> msg instanceof
ChangePeersAsyncRequest && dropMessages.get())
);
- alterZone(zoneName, 3, 2);
+ alterZone(zoneName, 2);
CatalogManager catalogManager = cluster.aliveNode().catalogManager();
@@ -287,11 +287,11 @@ public class ItRebalanceTest extends
IgniteIntegrationTest {
});
}
- private void alterZone(String zoneName, int partitions, int replicas) {
+ private void alterZone(String zoneName, int replicas) {
String sql1 = String.format("alter zone %s set "
- + "partitions=%d, replicas=%d, "
+ + "replicas=%d, "
+ "data_nodes_auto_adjust_scale_up=0, "
- + "data_nodes_auto_adjust_scale_down=0", zoneName, partitions,
replicas);
+ + "data_nodes_auto_adjust_scale_down=0", zoneName, replicas);
cluster.doInSession(0, session -> {
executeUpdate(sql1, session);