You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ib...@apache.org on 2023/07/26 15:05:30 UTC

[ignite-3] branch main updated: IGNITE-20045 Use classes from Catalog domain in assignments recalculation code (#2358)

This is an automated email from the ASF dual-hosted git repository.

ibessonov 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 a6f1f8208b IGNITE-20045 Use classes from Catalog domain in assignments recalculation code (#2358)
a6f1f8208b is described below

commit a6f1f8208b05058937578e19d0ca01b80c03731c
Author: Roman Puchkovskiy <ro...@gmail.com>
AuthorDate: Wed Jul 26 19:05:23 2023 +0400

    IGNITE-20045 Use classes from Catalog domain in assignments recalculation code (#2358)
---
 modules/distribution-zones/build.gradle            |  1 +
 .../rebalance/DistributionZoneRebalanceEngine.java | 26 ++++++---
 .../distributionzones/rebalance/RebalanceUtil.java | 42 ++++++-------
 .../rebalance/ZoneCatalogDescriptorUtils.java      | 68 ++++++++++++++++++++++
 .../DistributionZoneRebalanceEngineTest.java       | 25 ++++++++
 .../RebalanceUtilUpdateAssignmentsTest.java        | 20 ++++---
 .../internal/table/distributed/TableManager.java   | 42 +------------
 7 files changed, 148 insertions(+), 76 deletions(-)

diff --git a/modules/distribution-zones/build.gradle b/modules/distribution-zones/build.gradle
index c0d38eff4f..54c78c763f 100644
--- a/modules/distribution-zones/build.gradle
+++ b/modules/distribution-zones/build.gradle
@@ -34,6 +34,7 @@ dependencies {
     implementation project(':ignite-vault')
     implementation project(':ignite-schema')
     implementation project(':ignite-affinity')
+    implementation project(':ignite-catalog')
 
     implementation libs.auto.service.annotations
     implementation libs.fastutil.core
diff --git a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngine.java b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngine.java
index 89c45d0dd4..7de5fd1d2f 100644
--- a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngine.java
+++ b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngine.java
@@ -27,6 +27,8 @@ import static org.apache.ignite.internal.distributionzones.DistributionZonesUtil
 import static org.apache.ignite.internal.distributionzones.DistributionZonesUtil.getZoneById;
 import static org.apache.ignite.internal.distributionzones.DistributionZonesUtil.parseDataNodes;
 import static org.apache.ignite.internal.distributionzones.DistributionZonesUtil.zoneDataNodesKey;
+import static org.apache.ignite.internal.distributionzones.rebalance.ZoneCatalogDescriptorUtils.toZoneDescriptor;
+import static org.apache.ignite.internal.schema.CatalogDescriptorUtils.toTableDescriptor;
 import static org.apache.ignite.lang.ErrorGroups.Common.NODE_STOPPING_ERR;
 
 import java.util.ArrayList;
@@ -37,6 +39,8 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 import org.apache.ignite.configuration.notifications.ConfigurationListener;
 import org.apache.ignite.configuration.notifications.ConfigurationNotificationEvent;
+import org.apache.ignite.internal.catalog.descriptors.CatalogTableDescriptor;
+import org.apache.ignite.internal.catalog.descriptors.CatalogZoneDescriptor;
 import org.apache.ignite.internal.distributionzones.DistributionZoneManager;
 import org.apache.ignite.internal.distributionzones.Node;
 import org.apache.ignite.internal.distributionzones.configuration.DistributionZoneView;
@@ -176,10 +180,14 @@ public class DistributionZoneRebalanceEngine {
                         return completedFuture(null);
                     }
 
+                    CatalogZoneDescriptor zoneDescriptor = toZoneDescriptor(zoneConfig);
+
                     for (TableView tableConfig : findTablesByZoneId(zoneId)) {
+                        CatalogTableDescriptor tableDescriptor = toTableDescriptor(tableConfig);
+
                         CompletableFuture<?>[] partitionFutures = RebalanceUtil.triggerAllTablePartitionsRebalance(
-                                tableConfig,
-                                zoneConfig,
+                                tableDescriptor,
+                                zoneDescriptor,
                                 filteredDataNodes,
                                 evt.entryEvent().newEntry().revision(),
                                 metaStorageManager
@@ -198,13 +206,13 @@ public class DistributionZoneRebalanceEngine {
                                     // The exception is specific to this partition.
                                     LOG.error(
                                             "Exception on updating assignments for [table={}/{}, partition={}]", e,
-                                            tableConfig.id(), tableConfig.name(), finalPartId
+                                            tableDescriptor.id(), tableDescriptor.name(), finalPartId
                                     );
                                 } else {
                                     // The exception is from upstream and not specific for this partition, so don't log the partition index.
                                     LOG.error(
                                             "Exception on updating assignments for [table={}/{}]", e,
-                                            tableConfig.id(), tableConfig.name()
+                                            tableDescriptor.id(), tableDescriptor.name()
                                     );
                                 }
 
@@ -252,15 +260,19 @@ public class DistributionZoneRebalanceEngine {
 
             List<TableView> tableViews = findTablesByZoneId(zoneCfg.zoneId());
 
+            CatalogZoneDescriptor zoneDescriptor = toZoneDescriptor(zoneCfg);
+
             List<CompletableFuture<?>> tableFutures = new ArrayList<>(tableViews.size());
 
             for (TableView tableCfg : tableViews) {
+                CatalogTableDescriptor tableDescriptor = toTableDescriptor(tableCfg);
+
                 LOG.info("Received update for replicas number [table={}/{}, oldNumber={}, newNumber={}]",
-                        tableCfg.id(), tableCfg.name(), replicasCtx.oldValue(), replicasCtx.newValue());
+                        tableDescriptor.id(), tableDescriptor.name(), replicasCtx.oldValue(), replicasCtx.newValue());
 
                 CompletableFuture<?>[] partitionFutures = RebalanceUtil.triggerAllTablePartitionsRebalance(
-                        tableCfg,
-                        zoneCfg,
+                        tableDescriptor,
+                        zoneDescriptor,
                         dataNodes,
                         replicasCtx.storageRevision(),
                         metaStorageManager
diff --git a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtil.java b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtil.java
index 8c10922436..bd2100f677 100644
--- a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtil.java
+++ b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtil.java
@@ -43,12 +43,12 @@ import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 import org.apache.ignite.internal.affinity.AffinityUtils;
 import org.apache.ignite.internal.affinity.Assignment;
-import org.apache.ignite.internal.distributionzones.configuration.DistributionZoneView;
+import org.apache.ignite.internal.catalog.descriptors.CatalogTableDescriptor;
+import org.apache.ignite.internal.catalog.descriptors.CatalogZoneDescriptor;
 import org.apache.ignite.internal.logger.IgniteLogger;
 import org.apache.ignite.internal.logger.Loggers;
 import org.apache.ignite.internal.metastorage.MetaStorageManager;
 import org.apache.ignite.internal.metastorage.dsl.Condition;
-import org.apache.ignite.internal.schema.configuration.TableView;
 import org.apache.ignite.internal.util.ByteUtils;
 import org.apache.ignite.internal.vault.VaultEntry;
 import org.apache.ignite.internal.vault.VaultManager;
@@ -96,7 +96,7 @@ public class RebalanceUtil {
     /**
      * Update keys that related to rebalance algorithm in Meta Storage. Keys are specific for partition.
      *
-     * @param tableView Table config view.
+     * @param tableDescriptor Table descriptor.
      * @param partId Unique identifier of a partition.
      * @param dataNodes Data nodes.
      * @param replicas Number of replicas for a table.
@@ -107,7 +107,7 @@ public class RebalanceUtil {
      * @return Future representing result of updating keys in {@code metaStorageMgr}
      */
     public static @NotNull CompletableFuture<Void> updatePendingAssignmentsKeys(
-            TableView tableView,
+            CatalogTableDescriptor tableDescriptor,
             TablePartitionId partId,
             Collection<String> dataNodes,
             int replicas,
@@ -186,14 +186,14 @@ public class RebalanceUtil {
                 case PENDING_KEY_UPDATED:
                     LOG.info(
                             "Update metastore pending partitions key [key={}, partition={}, table={}/{}, newVal={}]",
-                            partAssignmentsPendingKey.toString(), partNum, tableView.id(), tableView.name(),
+                            partAssignmentsPendingKey.toString(), partNum, tableDescriptor.id(), tableDescriptor.name(),
                             ByteUtils.fromBytes(partAssignmentsBytes));
 
                     break;
                 case PLANNED_KEY_UPDATED:
                     LOG.info(
                             "Update metastore planned partitions key [key={}, partition={}, table={}/{}, newVal={}]",
-                            partAssignmentsPlannedKey, partNum, tableView.id(), tableView.name(),
+                            partAssignmentsPlannedKey, partNum, tableDescriptor.id(), tableDescriptor.name(),
                             ByteUtils.fromBytes(partAssignmentsBytes)
                     );
 
@@ -201,7 +201,7 @@ public class RebalanceUtil {
                 case PLANNED_KEY_REMOVED_EQUALS_PENDING:
                     LOG.info(
                             "Remove planned key because current pending key has the same value [key={}, partition={}, table={}/{}, val={}]",
-                            partAssignmentsPlannedKey.toString(), partNum, tableView.id(), tableView.name(),
+                            partAssignmentsPlannedKey.toString(), partNum, tableDescriptor.id(), tableDescriptor.name(),
                             ByteUtils.fromBytes(partAssignmentsBytes)
                     );
 
@@ -210,7 +210,7 @@ public class RebalanceUtil {
                     LOG.info(
                             "Remove planned key because pending is empty and calculated assignments are equal to current assignments "
                                     + "[key={}, partition={}, table={}/{}, val={}]",
-                            partAssignmentsPlannedKey.toString(), partNum, tableView.id(), tableView.name(),
+                            partAssignmentsPlannedKey.toString(), partNum, tableDescriptor.id(), tableDescriptor.name(),
                             ByteUtils.fromBytes(partAssignmentsBytes)
                     );
 
@@ -218,7 +218,7 @@ public class RebalanceUtil {
                 case ASSIGNMENT_NOT_UPDATED:
                     LOG.debug(
                             "Assignments are not updated [key={}, partition={}, table={}/{}, val={}]",
-                            partAssignmentsPlannedKey.toString(), partNum, tableView.id(), tableView.name(),
+                            partAssignmentsPlannedKey.toString(), partNum, tableDescriptor.id(), tableDescriptor.name(),
                             ByteUtils.fromBytes(partAssignmentsBytes)
                     );
 
@@ -226,7 +226,7 @@ public class RebalanceUtil {
                 case OUTDATED_UPDATE_RECEIVED:
                     LOG.debug(
                             "Received outdated rebalance trigger event [revision={}, partition={}, table={}/{}]",
-                            revision, partNum, tableView.id(), tableView.name());
+                            revision, partNum, tableDescriptor.id(), tableDescriptor.name());
 
                     break;
                 default:
@@ -241,8 +241,8 @@ public class RebalanceUtil {
      * provided data nodes, and, if the calculated assignments are different from the ones loaded from the
      * MetaStorages, writes them as pending assignments.
      *
-     * @param tableCfg Table configuration snapshot.
-     * @param zoneCfg Zone configuration snapshot.
+     * @param tableDescriptor Table descriptor.
+     * @param zoneDescriptor Zone descriptor.
      * @param dataNodes Data nodes to use.
      * @param storageRevision MetaStorage revision corresponding to this request.
      * @param metaStorageManager MetaStorage manager used to read/write assignments.
@@ -250,31 +250,31 @@ public class RebalanceUtil {
      *     rebalance triggering completes.
      */
     public static CompletableFuture<?>[] triggerAllTablePartitionsRebalance(
-            TableView tableCfg,
-            DistributionZoneView zoneCfg,
+            CatalogTableDescriptor tableDescriptor,
+            CatalogZoneDescriptor zoneDescriptor,
             Set<String> dataNodes,
             long storageRevision,
             MetaStorageManager metaStorageManager
     ) {
         CompletableFuture<List<Set<Assignment>>> tableAssignmentsFut = tableAssignments(
                 metaStorageManager,
-                tableCfg.id(),
-                zoneCfg.partitions()
+                tableDescriptor.id(),
+                zoneDescriptor.partitions()
         );
 
-        CompletableFuture<?>[] futures = new CompletableFuture[zoneCfg.partitions()];
+        CompletableFuture<?>[] futures = new CompletableFuture[zoneDescriptor.partitions()];
 
-        for (int partId = 0; partId < zoneCfg.partitions(); partId++) {
-            TablePartitionId replicaGrpId = new TablePartitionId(tableCfg.id(), partId);
+        for (int partId = 0; partId < zoneDescriptor.partitions(); partId++) {
+            TablePartitionId replicaGrpId = new TablePartitionId(tableDescriptor.id(), partId);
 
             int finalPartId = partId;
 
             futures[partId] = tableAssignmentsFut.thenCompose(tableAssignments ->
                     updatePendingAssignmentsKeys(
-                            tableCfg,
+                            tableDescriptor,
                             replicaGrpId,
                             dataNodes,
-                            zoneCfg.replicas(),
+                            zoneDescriptor.replicas(),
                             storageRevision,
                             metaStorageManager,
                             finalPartId,
diff --git a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/ZoneCatalogDescriptorUtils.java b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/ZoneCatalogDescriptorUtils.java
new file mode 100644
index 0000000000..1b98fc4c32
--- /dev/null
+++ b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/ZoneCatalogDescriptorUtils.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.distributionzones.rebalance;
+
+import java.lang.reflect.Method;
+import org.apache.ignite.internal.catalog.descriptors.CatalogDataStorageDescriptor;
+import org.apache.ignite.internal.catalog.descriptors.CatalogZoneDescriptor;
+import org.apache.ignite.internal.distributionzones.configuration.DistributionZoneView;
+import org.apache.ignite.internal.schema.configuration.storage.DataStorageView;
+
+/**
+ * Utils used to convert configuration representations of distribution zones to catalog representations.
+ */
+@Deprecated(forRemoval = true)
+public class ZoneCatalogDescriptorUtils {
+    // TODO: IGNITE-19719 Fix it
+    /**
+     * Converts a distribution zone configuration to a Distribution zone descriptor.
+     *
+     * @param config Distribution zone configuration.
+     */
+    @Deprecated(forRemoval = true)
+    public static CatalogZoneDescriptor toZoneDescriptor(DistributionZoneView config) {
+        return new CatalogZoneDescriptor(
+                config.zoneId(),
+                config.name(),
+                config.partitions(),
+                config.replicas(),
+                config.dataNodesAutoAdjust(),
+                config.dataNodesAutoAdjustScaleUp(),
+                config.dataNodesAutoAdjustScaleDown(),
+                config.filter(),
+                toDataStorageDescriptor(config.dataStorage())
+        );
+    }
+
+    @Deprecated(forRemoval = true)
+    private static CatalogDataStorageDescriptor toDataStorageDescriptor(DataStorageView config) {
+        String dataRegion;
+
+        try {
+            Method dataRegionMethod = config.getClass().getMethod("dataRegion");
+
+            dataRegionMethod.setAccessible(true);
+
+            dataRegion = (String) dataRegionMethod.invoke(config);
+        } catch (ReflectiveOperationException e) {
+            dataRegion = e.getMessage();
+        }
+
+        return new CatalogDataStorageDescriptor(config.name(), dataRegion);
+    }
+}
diff --git a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngineTest.java b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngineTest.java
index 8b128c09aa..6382aba231 100644
--- a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngineTest.java
+++ b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/DistributionZoneRebalanceEngineTest.java
@@ -238,6 +238,7 @@ public class DistributionZoneRebalanceEngineTest extends IgniteAbstractTest {
             TablesConfiguration tablesConfiguration
     ) {
         assignTableIds(tablesConfiguration);
+        completeTablesConfigs(tablesConfiguration);
 
         createRebalanceEngine(tablesConfiguration);
 
@@ -273,6 +274,7 @@ public class DistributionZoneRebalanceEngineTest extends IgniteAbstractTest {
             @InjectConfiguration ("mock.tables {table0 = { zoneId = 1 }}") TablesConfiguration tablesConfiguration
     ) {
         assignTableIds(tablesConfiguration);
+        completeTablesConfigs(tablesConfiguration);
 
         createRebalanceEngine(tablesConfiguration);
 
@@ -307,6 +309,7 @@ public class DistributionZoneRebalanceEngineTest extends IgniteAbstractTest {
             @InjectConfiguration("mock.tables {table0 = { zoneId = 1 }}") TablesConfiguration tablesConfiguration
     ) {
         assignTableIds(tablesConfiguration);
+        completeTablesConfigs(tablesConfiguration);
 
         createRebalanceEngine(tablesConfiguration);
 
@@ -343,6 +346,7 @@ public class DistributionZoneRebalanceEngineTest extends IgniteAbstractTest {
             @InjectConfiguration("mock.tables {table0 = { zoneId = 1 }}") TablesConfiguration tablesConfiguration
     ) {
         assignTableIds(tablesConfiguration);
+        completeTablesConfigs(tablesConfiguration);
 
         createRebalanceEngine(tablesConfiguration);
 
@@ -380,6 +384,8 @@ public class DistributionZoneRebalanceEngineTest extends IgniteAbstractTest {
                             + "table0 = { zoneId = 1, id = 1 }}")
             TablesConfiguration tablesConfiguration
     ) throws Exception {
+        completeTablesConfigs(tablesConfiguration);
+
         when(distributionZoneManager.dataNodes(anyInt())).thenReturn(Set.of("node0"));
 
         keyValueStorage.put(stablePartAssignmentsKey(new TablePartitionId(1, 0)).bytes(), toBytes(Set.of("node0")), someTimestamp());
@@ -415,6 +421,8 @@ public class DistributionZoneRebalanceEngineTest extends IgniteAbstractTest {
                             + "table0 = { zoneId = 0, id = 1 }}")
             TablesConfiguration tablesConfiguration
     ) throws Exception {
+        completeTablesConfigs(tablesConfiguration);
+
         when(distributionZoneManager.dataNodes(anyInt())).thenReturn(Set.of("node0"));
 
         for (int i = 0; i < 25; i++) {
@@ -443,6 +451,23 @@ public class DistributionZoneRebalanceEngineTest extends IgniteAbstractTest {
         }
     }
 
+    private static void completeTablesConfigs(TablesConfiguration tablesConfiguration) {
+        CompletableFuture<Void> future = tablesConfiguration.change(tablesChange -> {
+            tablesChange.changeTables(tablesListChange -> {
+                tablesListChange.forEach(
+                        tableView -> tablesListChange.update(tableView.name(), tableChange -> {
+                            tableChange.changeColumns(columnsListChange -> columnsListChange.create("k1", columnChange -> {
+                                columnChange.changeType(typeChange -> typeChange.changeType("string"));
+                            }));
+
+                            tableChange.changePrimaryKey(primaryKeyChange -> primaryKeyChange.changeColumns("k1"));
+                        }));
+            });
+        });
+
+        assertThat(future, willCompleteSuccessfully());
+    }
+
     private void createRebalanceEngine(TablesConfiguration tablesConfiguration) {
         createRebalanceEngine(tablesConfiguration, metaStorageManager);
     }
diff --git a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtilUpdateAssignmentsTest.java b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtilUpdateAssignmentsTest.java
index 449e3bad5f..93800f158e 100644
--- a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtilUpdateAssignmentsTest.java
+++ b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtilUpdateAssignmentsTest.java
@@ -38,11 +38,11 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.stream.IntStream;
 import org.apache.ignite.internal.affinity.Assignment;
+import org.apache.ignite.internal.catalog.descriptors.CatalogTableColumnDescriptor;
+import org.apache.ignite.internal.catalog.descriptors.CatalogTableDescriptor;
 import org.apache.ignite.internal.configuration.ConfigurationManager;
 import org.apache.ignite.internal.configuration.ConfigurationTreeGenerator;
 import org.apache.ignite.internal.configuration.storage.TestConfigurationStorage;
-import org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
-import org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
 import org.apache.ignite.internal.configuration.validation.TestConfigurationValidator;
 import org.apache.ignite.internal.distributionzones.configuration.DistributionZonesConfiguration;
 import org.apache.ignite.internal.hlc.HybridTimestamp;
@@ -60,13 +60,13 @@ import org.apache.ignite.internal.raft.Command;
 import org.apache.ignite.internal.raft.WriteCommand;
 import org.apache.ignite.internal.raft.service.CommandClosure;
 import org.apache.ignite.internal.raft.service.RaftGroupService;
-import org.apache.ignite.internal.schema.configuration.TableConfiguration;
 import org.apache.ignite.internal.storage.pagememory.configuration.schema.PersistentPageMemoryDataStorageConfigurationSchema;
 import org.apache.ignite.internal.testframework.IgniteAbstractTest;
 import org.apache.ignite.internal.util.ByteUtils;
 import org.apache.ignite.lang.IgniteInternalException;
 import org.apache.ignite.network.ClusterService;
 import org.apache.ignite.network.MessagingService;
+import org.apache.ignite.sql.ColumnType;
 import org.jetbrains.annotations.Nullable;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
@@ -79,7 +79,7 @@ import org.mockito.quality.Strictness;
 /**
  * Tests for updating assignment in the meta storage.
  */
-@ExtendWith({MockitoExtension.class, ConfigurationExtension.class})
+@ExtendWith(MockitoExtension.class)
 @MockitoSettings(strictness = Strictness.LENIENT)
 public class RebalanceUtilUpdateAssignmentsTest extends IgniteAbstractTest {
     private static final IgniteLogger LOG = Loggers.forClass(RebalanceUtilUpdateAssignmentsTest.class);
@@ -94,8 +94,14 @@ public class RebalanceUtilUpdateAssignmentsTest extends IgniteAbstractTest {
 
     private MetaStorageManager metaStorageManager;
 
-    @InjectConfiguration(name = "table1")
-    private TableConfiguration tableConfig;
+    private final CatalogTableDescriptor tableDescriptor = new CatalogTableDescriptor(
+            1,
+            "table1",
+            0,
+            List.of(new CatalogTableColumnDescriptor("k1", ColumnType.INT32, false, 0, 0, 0, null)),
+            List.of("k1"),
+            null
+    );
 
     private static final int partNum = 2;
     private static final int replicas = 2;
@@ -509,7 +515,7 @@ public class RebalanceUtilUpdateAssignmentsTest extends IgniteAbstractTest {
         }
 
         RebalanceUtil.updatePendingAssignmentsKeys(
-                tableConfig.value(), tablePartitionId, nodesForNewAssignments,
+                tableDescriptor, tablePartitionId, nodesForNewAssignments,
                 replicas, 1, metaStorageManager, partNum, tableCfgAssignments
         );
 
diff --git a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
index aa419d043f..72f9ad055c 100644
--- a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
+++ b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
@@ -29,6 +29,7 @@ import static org.apache.ignite.internal.causality.IncrementalVersionedValue.dep
 import static org.apache.ignite.internal.distributionzones.DistributionZonesUtil.getZoneById;
 import static org.apache.ignite.internal.distributionzones.rebalance.RebalanceUtil.partitionAssignments;
 import static org.apache.ignite.internal.distributionzones.rebalance.RebalanceUtil.tableAssignments;
+import static org.apache.ignite.internal.distributionzones.rebalance.ZoneCatalogDescriptorUtils.toZoneDescriptor;
 import static org.apache.ignite.internal.metastorage.dsl.Operations.put;
 import static org.apache.ignite.internal.schema.CatalogDescriptorUtils.toTableDescriptor;
 import static org.apache.ignite.internal.schema.SchemaManager.INITIAL_SCHEMA_VERSION;
@@ -45,7 +46,6 @@ import static org.apache.ignite.internal.utils.RebalanceUtil.stablePartAssignmen
 
 import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
 import java.io.IOException;
-import java.lang.reflect.Method;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -95,7 +95,6 @@ import org.apache.ignite.internal.causality.CompletionListener;
 import org.apache.ignite.internal.causality.IncrementalVersionedValue;
 import org.apache.ignite.internal.cluster.management.ClusterManagementGroupManager;
 import org.apache.ignite.internal.distributionzones.DistributionZoneManager;
-import org.apache.ignite.internal.distributionzones.configuration.DistributionZoneView;
 import org.apache.ignite.internal.distributionzones.configuration.DistributionZonesConfiguration;
 import org.apache.ignite.internal.hlc.HybridClock;
 import org.apache.ignite.internal.hlc.HybridTimestamp;
@@ -136,7 +135,6 @@ import org.apache.ignite.internal.schema.configuration.TableView;
 import org.apache.ignite.internal.schema.configuration.TablesChange;
 import org.apache.ignite.internal.schema.configuration.TablesConfiguration;
 import org.apache.ignite.internal.schema.configuration.index.TableIndexView;
-import org.apache.ignite.internal.schema.configuration.storage.DataStorageView;
 import org.apache.ignite.internal.schema.event.SchemaEvent;
 import org.apache.ignite.internal.schema.event.SchemaEventParameters;
 import org.apache.ignite.internal.storage.DataStorageManager;
@@ -2720,42 +2718,4 @@ public class TableManager extends Producer<TableEvent, TableEventParameters> imp
     private CatalogZoneDescriptor getZoneDescriptor(int id) {
         return toZoneDescriptor(getZoneById(zonesConfig, id).value());
     }
-
-    // TODO: IGNITE-19719 Fix it
-    /**
-     * Converts a distribution zone configuration to a Distribution zone descriptor.
-     *
-     * @param config Distribution zone configuration.
-     */
-    @Deprecated(forRemoval = true)
-    public static CatalogZoneDescriptor toZoneDescriptor(DistributionZoneView config) {
-        return new CatalogZoneDescriptor(
-                config.zoneId(),
-                config.name(),
-                config.partitions(),
-                config.replicas(),
-                config.dataNodesAutoAdjust(),
-                config.dataNodesAutoAdjustScaleUp(),
-                config.dataNodesAutoAdjustScaleDown(),
-                config.filter(),
-                toDataStorageDescriptor(config.dataStorage())
-        );
-    }
-
-    @Deprecated(forRemoval = true)
-    private static CatalogDataStorageDescriptor toDataStorageDescriptor(DataStorageView config) {
-        String dataRegion;
-
-        try {
-            Method dataRegionMethod = config.getClass().getMethod("dataRegion");
-
-            dataRegionMethod.setAccessible(true);
-
-            dataRegion = (String) dataRegionMethod.invoke(config);
-        } catch (ReflectiveOperationException e) {
-            dataRegion = e.getMessage();
-        }
-
-        return new CatalogDataStorageDescriptor(config.name(), dataRegion);
-    }
 }