You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sa...@apache.org on 2023/01/18 13:58:10 UTC

[ignite-3] branch main updated: IGNITE-18540 Fixed processing of the default distribution zone. (#1532)

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

sanpwc 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 17473a4502 IGNITE-18540 Fixed processing of the default distribution zone. (#1532)
17473a4502 is described below

commit 17473a450292d7ddd2f0a46a47f399d7f7c44d54
Author: Sergey Uttsel <ut...@gmail.com>
AuthorDate: Wed Jan 18 16:58:05 2023 +0300

    IGNITE-18540 Fixed processing of the default distribution zone. (#1532)
---
 .../distributionzones/DistributionZoneManager.java | 194 +++++++++++++--------
 ...ibutionZoneManagerConfigurationChangesTest.java |  28 ++-
 .../DistributionZoneManagerTest.java               |  94 ++++++----
 .../DistributionZoneManagerWatchListenerTest.java  | 117 ++++++++-----
 4 files changed, 277 insertions(+), 156 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 db891433e3..bd830de458 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
@@ -289,54 +289,45 @@ public class DistributionZoneManager implements IgniteComponent {
         try {
             CompletableFuture<Void> fut = new CompletableFuture<>();
 
-            zonesConfiguration.change(zonesChange -> zonesChange.changeDistributionZones(zonesListChange -> {
-                NamedListChange<DistributionZoneView, DistributionZoneChange> renameChange;
-
-                try {
-                    renameChange = zonesListChange.rename(name, distributionZoneCfg.name());
-                } catch (IllegalArgumentException e) {
-                    throw new DistributionZoneRenameException(name, distributionZoneCfg.name(), e);
-                }
+            CompletableFuture<Void> change;
+
+            if (DEFAULT_ZONE_NAME.equals(name)) {
+                change = zonesConfiguration.change(
+                        zonesChange -> zonesChange.changeDefaultDistributionZone(
+                                zoneChange -> updateZoneChange(zoneChange, distributionZoneCfg)
+                        )
+                );
+            } else {
+                change = zonesConfiguration.change(zonesChange -> zonesChange.changeDistributionZones(zonesListChange -> {
+                    NamedListChange<DistributionZoneView, DistributionZoneChange> renameChange;
 
-                try {
-                    renameChange
-                            .update(
-                                    distributionZoneCfg.name(), zoneChange -> {
-                                        if (distributionZoneCfg.dataNodesAutoAdjust() != null) {
-                                            zoneChange.changeDataNodesAutoAdjust(distributionZoneCfg.dataNodesAutoAdjust());
-                                            zoneChange.changeDataNodesAutoAdjustScaleUp(Integer.MAX_VALUE);
-                                            zoneChange.changeDataNodesAutoAdjustScaleDown(Integer.MAX_VALUE);
-                                        }
+                    try {
+                        renameChange = zonesListChange.rename(name, distributionZoneCfg.name());
+                    } catch (IllegalArgumentException e) {
+                        throw new DistributionZoneRenameException(name, distributionZoneCfg.name(), e);
+                    }
 
-                                        if (distributionZoneCfg.dataNodesAutoAdjustScaleUp() != null) {
-                                            zoneChange.changeDataNodesAutoAdjustScaleUp(
-                                                    distributionZoneCfg.dataNodesAutoAdjustScaleUp());
-                                            zoneChange.changeDataNodesAutoAdjust(Integer.MAX_VALUE);
-                                        }
+                    try {
+                        renameChange.update(distributionZoneCfg.name(), zoneChange -> updateZoneChange(zoneChange, distributionZoneCfg));
+                    } catch (IllegalArgumentException e) {
+                        throw new DistributionZoneNotFoundException(distributionZoneCfg.name(), e);
+                    }
+                }));
+            }
 
-                                        if (distributionZoneCfg.dataNodesAutoAdjustScaleDown() != null) {
-                                            zoneChange.changeDataNodesAutoAdjustScaleDown(
-                                                    distributionZoneCfg.dataNodesAutoAdjustScaleDown());
-                                            zoneChange.changeDataNodesAutoAdjust(Integer.MAX_VALUE);
-                                        }
-                                    });
-                } catch (IllegalArgumentException e) {
-                    throw new DistributionZoneNotFoundException(distributionZoneCfg.name(), e);
+            change.whenComplete((res, e) -> {
+                if (e != null) {
+                    fut.completeExceptionally(
+                            unwrapDistributionZoneException(
+                                    e,
+                                    DistributionZoneRenameException.class,
+                                    DistributionZoneNotFoundException.class,
+                                    ConfigurationValidationException.class)
+                    );
+                } else {
+                    fut.complete(null);
                 }
-            }))
-                    .whenComplete((res, e) -> {
-                        if (e != null) {
-                            fut.completeExceptionally(
-                                    unwrapDistributionZoneException(
-                                            e,
-                                            DistributionZoneRenameException.class,
-                                            DistributionZoneNotFoundException.class,
-                                            ConfigurationValidationException.class)
-                            );
-                        } else {
-                            fut.complete(null);
-                        }
-                    });
+            });
 
             return fut;
         } finally {
@@ -439,7 +430,11 @@ public class DistributionZoneManager implements IgniteComponent {
         }
 
         try {
-            zonesConfiguration.distributionZones().listenElements(new ZonesConfigurationListener());
+            ZonesConfigurationListener zonesConfigurationListener = new ZonesConfigurationListener();
+
+            zonesConfiguration.distributionZones().listenElements(zonesConfigurationListener);
+
+            zonesConfiguration.defaultDistributionZone().listen(zonesConfigurationListener);
 
             logicalTopologyService.addEventListener(topologyEventListener);
 
@@ -590,6 +585,32 @@ public class DistributionZoneManager implements IgniteComponent {
         }
     }
 
+    /**
+     * Updates {@link DistributionZoneChange} according to distribution zone configuration.
+     *
+     * @param zoneChange Zone change.
+     * @param distributionZoneCfg Distribution zone configuration.
+     */
+    private static void updateZoneChange(DistributionZoneChange zoneChange, DistributionZoneConfigurationParameters distributionZoneCfg) {
+        if (distributionZoneCfg.dataNodesAutoAdjust() != null) {
+            zoneChange.changeDataNodesAutoAdjust(distributionZoneCfg.dataNodesAutoAdjust());
+            zoneChange.changeDataNodesAutoAdjustScaleUp(Integer.MAX_VALUE);
+            zoneChange.changeDataNodesAutoAdjustScaleDown(Integer.MAX_VALUE);
+        }
+
+        if (distributionZoneCfg.dataNodesAutoAdjustScaleUp() != null) {
+            zoneChange.changeDataNodesAutoAdjustScaleUp(
+                    distributionZoneCfg.dataNodesAutoAdjustScaleUp());
+            zoneChange.changeDataNodesAutoAdjust(Integer.MAX_VALUE);
+        }
+
+        if (distributionZoneCfg.dataNodesAutoAdjustScaleDown() != null) {
+            zoneChange.changeDataNodesAutoAdjustScaleDown(
+                    distributionZoneCfg.dataNodesAutoAdjustScaleDown());
+            zoneChange.changeDataNodesAutoAdjust(Integer.MAX_VALUE);
+        }
+    }
+
     /**
      * Updates {@link DistributionZonesUtil#zonesLogicalTopologyKey()} and {@link DistributionZonesUtil#zonesLogicalTopologyVersionKey()}
      * in meta storage.
@@ -747,6 +768,8 @@ public class DistributionZoneManager implements IgniteComponent {
 
                                                             saveDataNodesToMetaStorage(zoneId, vaultEntry.value(), vaultAppliedRevision);
                                                         });
+
+                                                saveDataNodesToMetaStorage(DEFAULT_ZONE_ID, vaultEntry.value(), vaultAppliedRevision);
                                             }
                                         } finally {
                                             busyLock.leaveBusy();
@@ -781,7 +804,11 @@ public class DistributionZoneManager implements IgniteComponent {
 
                             Entry newEntry = evt.entryEvent().newEntry();
 
-                            Set<String> newLogicalTopology = ByteUtils.fromBytes(newEntry.value());
+                            long revision = newEntry.revision();
+
+                            byte[] newLogicalTopologyBytes = newEntry.value();
+
+                            Set<String> newLogicalTopology = ByteUtils.fromBytes(newLogicalTopologyBytes);
 
                             List<String> removedNodes =
                                     logicalTopology.stream().filter(node -> !newLogicalTopology.contains(node)).collect(toList());
@@ -791,37 +818,18 @@ public class DistributionZoneManager implements IgniteComponent {
 
                             logicalTopology = newLogicalTopology;
 
-                            zonesConfiguration.distributionZones().value().namedListKeys()
-                                    .forEach(zoneName -> {
-                                        DistributionZoneConfiguration zoneCfg = zonesConfiguration.distributionZones().get(zoneName);
-
-                                        int autoAdjust = zoneCfg.dataNodesAutoAdjust().value();
-                                        int autoAdjustScaleDown = zoneCfg.dataNodesAutoAdjustScaleDown().value();
-                                        int autoAdjustScaleUp = zoneCfg.dataNodesAutoAdjustScaleUp().value();
-
-                                        Integer zoneId = zoneCfg.zoneId().value();
-
-                                        if ((!addedNodes.isEmpty() || !removedNodes.isEmpty()) && autoAdjust != Integer.MAX_VALUE) {
-                                            //TODO: IGNITE-18134 Create scheduler with dataNodesAutoAdjust timer.
-                                            saveDataNodesToMetaStorage(
-                                                    zoneId, newEntry.value(), newEntry.revision()
-                                            );
-                                        } else {
-                                            if (!addedNodes.isEmpty() && autoAdjustScaleUp != Integer.MAX_VALUE) {
-                                                //TODO: IGNITE-18121 Create scale up scheduler with dataNodesAutoAdjustScaleUp timer.
-                                                saveDataNodesToMetaStorage(
-                                                        zoneId, newEntry.value(), newEntry.revision()
-                                                );
-                                            }
+                            NamedConfigurationTree<DistributionZoneConfiguration, DistributionZoneView, DistributionZoneChange> zones =
+                                    zonesConfiguration.distributionZones();
 
-                                            if (!removedNodes.isEmpty() && autoAdjustScaleDown != Integer.MAX_VALUE) {
-                                                //TODO: IGNITE-18132 Create scale down scheduler with dataNodesAutoAdjustScaleDown timer.
-                                                saveDataNodesToMetaStorage(
-                                                        zoneId, newEntry.value(), newEntry.revision()
-                                                );
-                                            }
-                                        }
-                                    });
+                            for (int i = 0; i < zones.value().size(); i++) {
+                                DistributionZoneView zoneView = zones.value().get(i);
+
+                                scheduleTimers(zoneView, addedNodes, removedNodes, newLogicalTopologyBytes, revision);
+                            }
+
+                            DistributionZoneView defaultZoneView = zonesConfiguration.value().defaultDistributionZone();
+
+                            scheduleTimers(defaultZoneView, addedNodes, removedNodes, newLogicalTopologyBytes, revision);
 
                             return true;
                         } finally {
@@ -837,6 +845,40 @@ public class DistributionZoneManager implements IgniteComponent {
                 .thenAccept(id -> watchListenerId = id);
     }
 
+    private void scheduleTimers(
+            DistributionZoneView zoneCfg,
+            List<String> addedNodes, List<String> removedNodes,
+            byte[] newLogicalTopologyBytes,
+            long revision
+    ) {
+        int autoAdjust = zoneCfg.dataNodesAutoAdjust();
+        int autoAdjustScaleDown = zoneCfg.dataNodesAutoAdjustScaleDown();
+        int autoAdjustScaleUp = zoneCfg.dataNodesAutoAdjustScaleUp();
+
+        int zoneId = zoneCfg.zoneId();
+
+        if ((!addedNodes.isEmpty() || !removedNodes.isEmpty()) && autoAdjust != Integer.MAX_VALUE) {
+            //TODO: IGNITE-18134 Create scheduler with dataNodesAutoAdjust timer.
+            saveDataNodesToMetaStorage(
+                    zoneId, newLogicalTopologyBytes, revision
+            );
+        } else {
+            if (!addedNodes.isEmpty() && autoAdjustScaleUp != Integer.MAX_VALUE) {
+                //TODO: IGNITE-18121 Create scale up scheduler with dataNodesAutoAdjustScaleUp timer.
+                saveDataNodesToMetaStorage(
+                        zoneId, newLogicalTopologyBytes, revision
+                );
+            }
+
+            if (!removedNodes.isEmpty() && autoAdjustScaleDown != Integer.MAX_VALUE) {
+                //TODO: IGNITE-18132 Create scale down scheduler with dataNodesAutoAdjustScaleDown timer.
+                saveDataNodesToMetaStorage(
+                        zoneId, newLogicalTopologyBytes, revision
+                );
+            }
+        }
+    }
+
     /**
      * Method updates data nodes value for the specified zone,
      * also sets {@code revision} to the {@link DistributionZonesUtil#zonesChangeTriggerKey()} if it passes the condition.
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 fc675e0592..f2787d6a64 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
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.distributionzones;
 
 import static java.util.concurrent.CompletableFuture.completedFuture;
 import static org.apache.ignite.configuration.annotation.ConfigurationType.DISTRIBUTED;
+import static org.apache.ignite.internal.distributionzones.DistributionZoneManager.DEFAULT_ZONE_NAME;
 import static org.apache.ignite.internal.distributionzones.DistributionZonesUtil.zoneDataNodesKey;
 import static org.apache.ignite.internal.distributionzones.DistributionZonesUtil.zonesChangeTriggerKey;
 import static org.apache.ignite.internal.distributionzones.DistributionZonesUtil.zonesLogicalTopologyKey;
@@ -235,21 +236,32 @@ public class DistributionZoneManagerConfigurationChangesTest extends IgniteAbstr
     }
 
     @Test
-    void testTriggerKeyPropagationAfterZoneUpdate() throws Exception {
+    void testTriggerKeyPropagationAfterDefaultZoneUpdate() throws Exception {
+        testTriggerKeyPropagationAfterZoneUpdate(DEFAULT_ZONE_NAME);
+    }
+
+    @Test
+    void testTriggerKeyPropagationAfterNotDefaultZoneUpdate() throws Exception {
+        testTriggerKeyPropagationAfterZoneUpdate(ZONE_NAME);
+    }
+
+    void testTriggerKeyPropagationAfterZoneUpdate(String zoneName) throws Exception {
         assertNull(keyValueStorage.get(zonesChangeTriggerKey().bytes()).value());
 
-        distributionZoneManager.createZone(new DistributionZoneConfigurationParameters.Builder(ZONE_NAME).build()).get();
+        int triggerKey = 0;
 
-        assertZonesChangeTriggerKey(1);
+        if (!DEFAULT_ZONE_NAME.equals(zoneName)) {
+            distributionZoneManager.createZone(new DistributionZoneConfigurationParameters.Builder(zoneName).build()).get();
+
+            assertZonesChangeTriggerKey(++triggerKey);
+        }
 
         distributionZoneManager.alterZone(
-                ZONE_NAME,
-                new DistributionZoneConfigurationParameters.Builder(ZONE_NAME).dataNodesAutoAdjust(100).build()
+                zoneName,
+                new DistributionZoneConfigurationParameters.Builder(zoneName).dataNodesAutoAdjust(100).build()
         ).get();
 
-        assertZonesChangeTriggerKey(2);
-
-        assertDataNodesForZone(1, nodes);
+        assertZonesChangeTriggerKey(++triggerKey);
     }
 
     @Test
diff --git a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerTest.java b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerTest.java
index 328df83319..0b0a19086d 100644
--- a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerTest.java
+++ b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerTest.java
@@ -226,59 +226,87 @@ class DistributionZoneManagerTest extends IgniteAbstractTest {
     }
 
     @Test
-    public void testUpdateZone() throws Exception {
-        distributionZoneManager.createZone(
-                        new DistributionZoneConfigurationParameters.Builder(ZONE_NAME).dataNodesAutoAdjust(100).build()
-                )
-                .get(5, TimeUnit.SECONDS);
+    public void testUpdateDefaultZone() throws Exception {
+        testUpdateZone(DEFAULT_ZONE_NAME);
+    }
 
-        DistributionZoneConfiguration zone1 = registry.getConfiguration(DistributionZonesConfiguration.KEY).distributionZones()
-                .get(ZONE_NAME);
+    @Test
+    public void testUpdateNotDefaultZone() throws Exception {
+        testUpdateZone(ZONE_NAME);
+    }
 
-        assertNotNull(zone1, "Zone was not created.");
-        assertEquals(ZONE_NAME, zone1.name().value(), "Zone name is wrong.");
-        assertEquals(Integer.MAX_VALUE, zone1.dataNodesAutoAdjustScaleUp().value(), "dataNodesAutoAdjustScaleUp is wrong.");
-        assertEquals(Integer.MAX_VALUE, zone1.dataNodesAutoAdjustScaleDown().value(), "dataNodesAutoAdjustScaleDown is wrong.");
-        assertEquals(100, zone1.dataNodesAutoAdjust().value(), "dataNodesAutoAdjust is wrong.");
+    private void testUpdateZone(String zoneName) throws Exception {
+        if (DEFAULT_ZONE_NAME.equals(zoneName)) {
+            distributionZoneManager.alterZone(
+                            zoneName,
+                            new DistributionZoneConfigurationParameters.Builder(zoneName).dataNodesAutoAdjust(100).build()
+                    )
+                    .get(5, TimeUnit.SECONDS);
+        } else {
+            distributionZoneManager.createZone(
+                            new DistributionZoneConfigurationParameters.Builder(zoneName).dataNodesAutoAdjust(100).build()
+                    )
+                    .get(5, TimeUnit.SECONDS);
+        }
+
+        DistributionZoneConfiguration zone = getZoneFromRegistry(zoneName);
+
+        assertNotNull(zone, "Zone was not created.");
+        assertEquals(zoneName, zone.name().value(), "Zone name is wrong.");
+        assertEquals(Integer.MAX_VALUE, zone.dataNodesAutoAdjustScaleUp().value(), "dataNodesAutoAdjustScaleUp is wrong.");
+        assertEquals(Integer.MAX_VALUE, zone.dataNodesAutoAdjustScaleDown().value(), "dataNodesAutoAdjustScaleDown is wrong.");
+        assertEquals(100, zone.dataNodesAutoAdjust().value(), "dataNodesAutoAdjust is wrong.");
 
+        assertNotNull(zone, "Zone was not created.");
+        assertEquals(zoneName, zone.name().value(), "Zone name is wrong.");
+        assertEquals(Integer.MAX_VALUE, zone.dataNodesAutoAdjustScaleUp().value(), "dataNodesAutoAdjustScaleUp is wrong.");
+        assertEquals(Integer.MAX_VALUE, zone.dataNodesAutoAdjustScaleDown().value(), "dataNodesAutoAdjustScaleDown is wrong.");
+        assertEquals(100, zone.dataNodesAutoAdjust().value(), "dataNodesAutoAdjust is wrong.");
 
-        distributionZoneManager.alterZone(ZONE_NAME, new DistributionZoneConfigurationParameters.Builder(ZONE_NAME)
+
+        distributionZoneManager.alterZone(zoneName, new DistributionZoneConfigurationParameters.Builder(zoneName)
                         .dataNodesAutoAdjustScaleUp(200).dataNodesAutoAdjustScaleDown(300).build())
                 .get(5, TimeUnit.SECONDS);
 
-        zone1 = registry.getConfiguration(DistributionZonesConfiguration.KEY).distributionZones()
-                .get(ZONE_NAME);
+        zone = getZoneFromRegistry(zoneName);
 
-        assertNotNull(zone1, "Zone was not created.");
-        assertEquals(200, zone1.dataNodesAutoAdjustScaleUp().value(), "dataNodesAutoAdjustScaleUp is wrong.");
-        assertEquals(300, zone1.dataNodesAutoAdjustScaleDown().value(), "dataNodesAutoAdjustScaleDown is wrong.");
-        assertEquals(Integer.MAX_VALUE, zone1.dataNodesAutoAdjust().value(), "dataNodesAutoAdjust is wrong.");
+        assertNotNull(zone, "Zone was not created.");
+        assertEquals(200, zone.dataNodesAutoAdjustScaleUp().value(), "dataNodesAutoAdjustScaleUp is wrong.");
+        assertEquals(300, zone.dataNodesAutoAdjustScaleDown().value(), "dataNodesAutoAdjustScaleDown is wrong.");
+        assertEquals(Integer.MAX_VALUE, zone.dataNodesAutoAdjust().value(), "dataNodesAutoAdjust is wrong.");
 
 
-        distributionZoneManager.alterZone(ZONE_NAME, new DistributionZoneConfigurationParameters.Builder(ZONE_NAME)
+        distributionZoneManager.alterZone(zoneName, new DistributionZoneConfigurationParameters.Builder(zoneName)
                         .dataNodesAutoAdjustScaleUp(400).build())
                 .get(5, TimeUnit.SECONDS);
 
-        zone1 = registry.getConfiguration(DistributionZonesConfiguration.KEY).distributionZones()
-                .get(ZONE_NAME);
+        zone = getZoneFromRegistry(zoneName);
 
-        assertNotNull(zone1, "Zone was not created.");
-        assertEquals(400, zone1.dataNodesAutoAdjustScaleUp().value(), "dataNodesAutoAdjustScaleUp is wrong.");
-        assertEquals(300, zone1.dataNodesAutoAdjustScaleDown().value(), "dataNodesAutoAdjustScaleDown is wrong.");
-        assertEquals(Integer.MAX_VALUE, zone1.dataNodesAutoAdjust().value(), "dataNodesAutoAdjust is wrong.");
+        assertNotNull(zone, "Zone was not created.");
+        assertEquals(400, zone.dataNodesAutoAdjustScaleUp().value(), "dataNodesAutoAdjustScaleUp is wrong.");
+        assertEquals(300, zone.dataNodesAutoAdjustScaleDown().value(), "dataNodesAutoAdjustScaleDown is wrong.");
+        assertEquals(Integer.MAX_VALUE, zone.dataNodesAutoAdjust().value(), "dataNodesAutoAdjust is wrong.");
 
 
-        distributionZoneManager.alterZone(ZONE_NAME, new DistributionZoneConfigurationParameters.Builder(ZONE_NAME)
+        distributionZoneManager.alterZone(zoneName, new DistributionZoneConfigurationParameters.Builder(zoneName)
                         .dataNodesAutoAdjust(500).build())
                 .get(5, TimeUnit.SECONDS);
 
-        zone1 = registry.getConfiguration(DistributionZonesConfiguration.KEY).distributionZones()
-                .get(ZONE_NAME);
+        zone = getZoneFromRegistry(zoneName);
 
-        assertNotNull(zone1, "Zone was not created.");
-        assertEquals(Integer.MAX_VALUE, zone1.dataNodesAutoAdjustScaleUp().value(), "dataNodesAutoAdjustScaleUp is wrong.");
-        assertEquals(Integer.MAX_VALUE, zone1.dataNodesAutoAdjustScaleDown().value(), "dataNodesAutoAdjustScaleDown is wrong.");
-        assertEquals(500, zone1.dataNodesAutoAdjust().value(), "dataNodesAutoAdjust is wrong.");
+        assertNotNull(zone, "Zone was not created.");
+        assertEquals(Integer.MAX_VALUE, zone.dataNodesAutoAdjustScaleUp().value(), "dataNodesAutoAdjustScaleUp is wrong.");
+        assertEquals(Integer.MAX_VALUE, zone.dataNodesAutoAdjustScaleDown().value(), "dataNodesAutoAdjustScaleDown is wrong.");
+        assertEquals(500, zone.dataNodesAutoAdjust().value(), "dataNodesAutoAdjust is wrong.");
+    }
+
+    private DistributionZoneConfiguration getZoneFromRegistry(String zoneName) {
+        if (DEFAULT_ZONE_NAME.equals(zoneName)) {
+            return registry.getConfiguration(DistributionZonesConfiguration.KEY).defaultDistributionZone();
+        } else {
+            return registry.getConfiguration(DistributionZonesConfiguration.KEY).distributionZones()
+                    .get(zoneName);
+        }
     }
 
     @Test
diff --git a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerWatchListenerTest.java b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerWatchListenerTest.java
index adc099b5aa..7e8480f9da 100644
--- a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerWatchListenerTest.java
+++ b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerWatchListenerTest.java
@@ -19,6 +19,8 @@ package org.apache.ignite.internal.distributionzones;
 
 import static java.util.concurrent.CompletableFuture.completedFuture;
 import static org.apache.ignite.configuration.annotation.ConfigurationType.DISTRIBUTED;
+import static org.apache.ignite.internal.distributionzones.DistributionZoneManager.DEFAULT_ZONE_ID;
+import static org.apache.ignite.internal.distributionzones.DistributionZoneManager.DEFAULT_ZONE_NAME;
 import static org.apache.ignite.internal.distributionzones.DistributionZonesUtil.zoneDataNodesKey;
 import static org.apache.ignite.internal.distributionzones.DistributionZonesUtil.zonesChangeTriggerKey;
 import static org.apache.ignite.internal.distributionzones.DistributionZonesUtil.zonesLogicalTopologyKey;
@@ -27,6 +29,7 @@ import static org.apache.ignite.internal.util.ByteUtils.fromBytes;
 import static org.apache.ignite.internal.util.ByteUtils.longToBytes;
 import static org.apache.ignite.internal.util.ByteUtils.toBytes;
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
@@ -56,6 +59,7 @@ import org.apache.ignite.internal.distributionzones.configuration.DistributionZo
 import org.apache.ignite.internal.distributionzones.configuration.DistributionZoneConfiguration;
 import org.apache.ignite.internal.distributionzones.configuration.DistributionZoneView;
 import org.apache.ignite.internal.distributionzones.configuration.DistributionZonesConfiguration;
+import org.apache.ignite.internal.distributionzones.configuration.DistributionZonesView;
 import org.apache.ignite.internal.metastorage.Entry;
 import org.apache.ignite.internal.metastorage.EntryEvent;
 import org.apache.ignite.internal.metastorage.MetaStorageManager;
@@ -90,6 +94,7 @@ import org.junit.jupiter.api.Test;
 /**
  * Tests distribution zones logical topology changes and reaction to that changes.
  */
+//TODO: IGNITE-18564 Add tests with not default distribution zones, when distributionZones.change.trigger per zone will be created.
 public class DistributionZoneManagerWatchListenerTest extends IgniteAbstractTest {
     private static final String ZONE_NAME_1 = "zone1";
 
@@ -164,6 +169,8 @@ public class DistributionZoneManagerWatchListenerTest extends IgniteAbstractTest
             return completedFuture(null);
         });
 
+        mockDefaultZoneConfiguration();
+        mockDefaultZoneView();
         mockEmptyZonesList();
 
         AtomicLong raftIndex = new AtomicLong();
@@ -240,56 +247,40 @@ public class DistributionZoneManagerWatchListenerTest extends IgniteAbstractTest
     }
 
     @Test
-    void testDataNodesUpdatedOnWatchListenerEvent() {
+    void testDataNodesOfDefaultZoneUpdatedOnWatchListenerEvent() {
         mockVaultZonesLogicalTopologyKey(Set.of());
 
         distributionZoneManager.start();
 
-        //TODO: Add second distribution zone, when distributionZones.change.trigger per zone will be created.
-        mockZones(mockZoneWithAutoAdjust());
-
         //first event
 
         Set<String> nodes = Set.of("node1", "node2");
 
-        watchListenerOnUpdate(nodes, 1);
+        watchListenerOnUpdate(nodes, 2);
 
-        verify(keyValueStorage, timeout(1000).times(1)).invoke(any());
+        verify(keyValueStorage, timeout(1000).times(2)).invoke(any());
 
-        checkDataNodesOfZone(1, nodes);
+        checkDataNodesOfZone(DEFAULT_ZONE_ID, nodes);
 
         //second event
 
         nodes = Set.of("node1", "node3");
 
-        watchListenerOnUpdate(nodes, 2);
+        watchListenerOnUpdate(nodes, 3);
 
-        verify(keyValueStorage, timeout(1000).times(2)).invoke(any());
+        verify(keyValueStorage, timeout(1000).times(3)).invoke(any());
 
-        checkDataNodesOfZone(1, nodes);
+        checkDataNodesOfZone(DEFAULT_ZONE_ID, nodes);
 
         //third event
 
         nodes = Collections.emptySet();
 
-        watchListenerOnUpdate(nodes, 3);
-
-        verify(keyValueStorage, timeout(1000).times(3)).invoke(any());
-
-        checkDataNodesOfZone(1, nodes);
-    }
-
-    private void checkDataNodesOfZone(int zoneId, Set<String> nodes) {
-        Entry entry = keyValueStorage.get(zoneDataNodesKey(zoneId).bytes());
+        watchListenerOnUpdate(nodes, 4);
 
-        if (nodes == null) {
-            assertNull(entry.value());
-        } else {
-            Set<String> newDataNodes = fromBytes(entry.value());
+        verify(keyValueStorage, timeout(1000).times(4)).invoke(any());
 
-            assertTrue(newDataNodes.containsAll(nodes));
-            assertEquals(nodes.size(), newDataNodes.size());
-        }
+        checkDataNodesOfZone(DEFAULT_ZONE_ID, nodes);
     }
 
     @Test
@@ -298,8 +289,6 @@ public class DistributionZoneManagerWatchListenerTest extends IgniteAbstractTest
 
         distributionZoneManager.start();
 
-        mockZones(mockZoneWithAutoAdjust());
-
         mockVaultAppliedRevision(1);
 
         long revision = 100;
@@ -310,15 +299,13 @@ public class DistributionZoneManagerWatchListenerTest extends IgniteAbstractTest
 
         watchListenerOnUpdate(nodes, revision);
 
-        verify(keyValueStorage, timeout(1000).times(1)).invoke(any());
+        verify(keyValueStorage, timeout(1000).times(2)).invoke(any());
 
-        checkDataNodesOfZone(1, null);
+        checkDataNodesOfZone(DEFAULT_ZONE_ID, Collections.emptySet());
     }
 
     @Test
     void testStaleVaultRevisionOnZoneManagerStart() {
-        mockZones(mockZoneWithAutoAdjust());
-
         long revision = 100;
 
         keyValueStorage.put(zonesChangeTriggerKey().bytes(), longToBytes(revision));
@@ -338,8 +325,6 @@ public class DistributionZoneManagerWatchListenerTest extends IgniteAbstractTest
 
     @Test
     void testDataNodesUpdatedOnZoneManagerStart() {
-        mockZones(mockZoneWithAutoAdjust());
-
         mockVaultAppliedRevision(2);
 
         Set<String> nodes = Set.of("node1", "node2");
@@ -350,7 +335,7 @@ public class DistributionZoneManagerWatchListenerTest extends IgniteAbstractTest
 
         verify(keyValueStorage, timeout(1000).times(1)).invoke(any());
 
-        checkDataNodesOfZone(1, nodes);
+        checkDataNodesOfZone(DEFAULT_ZONE_ID, nodes);
     }
 
     @Test
@@ -366,9 +351,24 @@ public class DistributionZoneManagerWatchListenerTest extends IgniteAbstractTest
 
         verify(keyValueStorage, after(500).never()).invoke(any());
 
-        Entry entry = keyValueStorage.get(zoneDataNodesKey(1).bytes());
+        assertNull(keyValueStorage.get(zoneDataNodesKey(DEFAULT_ZONE_ID).bytes()).value());
+        assertNull(keyValueStorage.get(zoneDataNodesKey(1).bytes()).value());
+    }
+
+    private void checkDataNodesOfZone(int zoneId, Set<String> nodes) {
+        Entry entry = keyValueStorage.get(zoneDataNodesKey(zoneId).bytes());
+
+        if (nodes == null) {
+            assertNull(entry.value(), () -> "Actual node list: " + fromBytes(entry.value()));
+        } else {
+            assertNotNull(entry);
+            assertNotNull(entry.value());
+
+            Set<String> newDataNodes = fromBytes(entry.value());
 
-        assertNull(entry.value());
+            assertTrue(newDataNodes.containsAll(nodes));
+            assertEquals(nodes.size(), newDataNodes.size());
+        }
     }
 
     private void mockEmptyZonesList() {
@@ -401,7 +401,7 @@ public class DistributionZoneManagerWatchListenerTest extends IgniteAbstractTest
         when(namedListView.namedListKeys()).thenReturn(names);
     }
 
-    private DistributionZoneConfiguration mockZone(
+    private DistributionZoneConfiguration mockZoneConfiguration(
             Integer zoneId,
             String name,
             Integer dataNodesAutoAdjustTime,
@@ -433,8 +433,47 @@ public class DistributionZoneManagerWatchListenerTest extends IgniteAbstractTest
         return distributionZoneConfiguration;
     }
 
+    private DistributionZoneView mockZoneView(
+            Integer zoneId,
+            String name,
+            Integer dataNodesAutoAdjustTime,
+            Integer dataNodesAutoAdjustScaleUpTime,
+            Integer dataNodesAutoAdjustScaleDownTime
+    ) {
+        DistributionZoneView distributionZoneView = mock(DistributionZoneView.class);
+
+        when(distributionZoneView.name()).thenReturn(name);
+        when(distributionZoneView.zoneId()).thenReturn(zoneId);
+        when(distributionZoneView.dataNodesAutoAdjust()).thenReturn(dataNodesAutoAdjustTime);
+        when(distributionZoneView.dataNodesAutoAdjustScaleUp()).thenReturn(dataNodesAutoAdjustScaleUpTime);
+        when(distributionZoneView.dataNodesAutoAdjustScaleDown()).thenReturn(dataNodesAutoAdjustScaleDownTime);
+
+        return distributionZoneView;
+    }
+
     private DistributionZoneConfiguration mockZoneWithAutoAdjust() {
-        return mockZone(1, ZONE_NAME_1, 100, Integer.MAX_VALUE, Integer.MAX_VALUE);
+        return mockZoneConfiguration(1, ZONE_NAME_1, 100, Integer.MAX_VALUE, Integer.MAX_VALUE);
+    }
+
+    private DistributionZoneConfiguration mockDefaultZoneConfiguration() {
+        DistributionZoneConfiguration defaultZone = mockZoneConfiguration(DEFAULT_ZONE_ID, DEFAULT_ZONE_NAME, 100, Integer.MAX_VALUE,
+                Integer.MAX_VALUE);
+
+        when(zonesConfiguration.defaultDistributionZone()).thenReturn(defaultZone);
+
+        return defaultZone;
+    }
+
+    private DistributionZoneView mockDefaultZoneView() {
+        DistributionZoneView defaultZone = mockZoneView(DEFAULT_ZONE_ID, DEFAULT_ZONE_NAME, 100, Integer.MAX_VALUE,
+                Integer.MAX_VALUE);
+
+        DistributionZonesView zonesView = mock(DistributionZonesView.class);
+
+        when(zonesView.defaultDistributionZone()).thenReturn(defaultZone);
+        when(zonesConfiguration.value()).thenReturn(zonesView);
+
+        return defaultZone;
     }
 
     private void mockVaultZonesLogicalTopologyKey(Set<String> nodes) {