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);

Reply via email to