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

namelchev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 268e014a4cb IGNITE-26820 Fixed data center ID serialization if 
IgniteConfiguration#setIncludeProperties is set (#12460)
268e014a4cb is described below

commit 268e014a4cba572a0f7661edde176e56019fbbfa
Author: Nikita Amelchev <[email protected]>
AuthorDate: Sun Oct 26 10:08:53 2025 +0300

    IGNITE-26820 Fixed data center ID serialization if 
IgniteConfiguration#setIncludeProperties is set (#12460)
---
 .../org/apache/ignite/internal/IgniteNodeAttributes.java  |  3 +++
 .../internal/managers/discovery/GridDiscoveryManager.java |  8 ++++++++
 .../apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java  |  6 +++---
 .../spi/discovery/tcp/internal/TcpDiscoveryNode.java      |  4 ++--
 .../datacenter/MultiDataCenterDeploymentTest.java         | 15 ++++-----------
 .../apache/ignite/testframework/junits/IgniteMock.java    |  5 +++++
 .../ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java    |  6 +++---
 .../spi/discovery/zk/internal/ZookeeperClusterNode.java   |  4 ++--
 8 files changed, 30 insertions(+), 21 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
index 7e844b35f48..7e79a695cae 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
@@ -196,6 +196,9 @@ public final class IgniteNodeAttributes {
     /** Supported features. */
     public static final String ATTR_IGNITE_FEATURES = ATTR_PREFIX + 
".features";
 
+    /** Data center ID. */
+    public static final String ATTR_DATA_CENTER_ID = ATTR_PREFIX + 
".datacenter.id";
+
     /**
      * Enforces singleton.
      */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 7334cfc16c9..14e26e7af65 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -150,6 +150,7 @@ import org.jetbrains.annotations.Nullable;
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2;
+import static org.apache.ignite.IgniteSystemProperties.IGNITE_DATA_CENTER_ID;
 import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_DISCOVERY_HISTORY_SIZE;
 import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID;
 import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_SECURITY_COMPATIBILITY_MODE;
@@ -165,6 +166,7 @@ import static 
org.apache.ignite.events.EventType.EVT_NODE_METRICS_UPDATED;
 import static org.apache.ignite.events.EventType.EVT_NODE_SEGMENTED;
 import static org.apache.ignite.failure.FailureType.CRITICAL_ERROR;
 import static org.apache.ignite.failure.FailureType.SYSTEM_WORKER_TERMINATION;
+import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_DATA_CENTER_ID;
 import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_DATA_REGIONS_OFFHEAP_SIZE;
 import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_DEPLOYMENT_MODE;
 import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_LATE_AFFINITY_ASSIGNMENT;
@@ -484,6 +486,12 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
         ctx.addNodeAttribute(ATTR_OFFHEAP_SIZE, requiredOffheap());
         ctx.addNodeAttribute(ATTR_DATA_REGIONS_OFFHEAP_SIZE, 
configuredOffheap());
 
+        // TODO When exposing to public interface, replace the retrieval in 
IgniteClusterNode implementations.
+        String dcId = IgniteSystemProperties.getString(IGNITE_DATA_CENTER_ID);
+
+        if (dcId != null)
+            ctx.addNodeAttribute(ATTR_DATA_CENTER_ID, dcId);
+
         DiscoverySpi spi = getSpi();
 
         discoOrdered = discoOrdered();
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index f96a86a5860..f3ee38abbdc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -111,11 +111,10 @@ import 
org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryEnsureDelivery;
 import org.jetbrains.annotations.Nullable;
 import org.jetbrains.annotations.TestOnly;
 
-import static org.apache.ignite.IgniteCommonsSystemProperties.getString;
 import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_CONSISTENT_ID_BY_HOST_WITHOUT_PORT;
-import static org.apache.ignite.IgniteSystemProperties.IGNITE_DATA_CENTER_ID;
 import static org.apache.ignite.IgniteSystemProperties.getBoolean;
 import static org.apache.ignite.failure.FailureType.CRITICAL_ERROR;
+import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_DATA_CENTER_ID;
 import static 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.DISCO_METRICS;
 
 /**
@@ -1170,7 +1169,8 @@ public class TcpDiscoverySpi extends IgniteSpiAdapter 
implements IgniteDiscovery
 
         locNode = new TcpDiscoveryNode(
             ignite.configuration().getNodeId(),
-            getString(IGNITE_DATA_CENTER_ID),
+            //TODO remove usage of internal API when an alternative from 
public API is available
+            
(String)((IgniteEx)ignite).context().nodeAttributes().get(ATTR_DATA_CENTER_ID),
             addrs.get1(),
             addrs.get2(),
             srvPort,
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java
index 6b409f68d49..36727c5b66d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNode.java
@@ -30,7 +30,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
-import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.cache.CacheMetrics;
 import org.apache.ignite.cluster.ClusterMetrics;
 import org.apache.ignite.cluster.ClusterNode;
@@ -49,6 +48,7 @@ import 
org.apache.ignite.spi.discovery.DiscoveryMetricsProvider;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
 import org.jetbrains.annotations.Nullable;
 
+import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_DATA_CENTER_ID;
 import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_NODE_CONSISTENT_ID;
 import static org.apache.ignite.internal.util.lang.ClusterNodeFunc.eqNodes;
 
@@ -628,7 +628,7 @@ public class TcpDiscoveryNode extends 
GridMetadataAwareAdapter implements Ignite
         else
             consistentId = consistentIdAttr != null ? consistentIdAttr : 
U.consistentId(addrs, discPort);
 
-        dcId = (String)attrs.get(IgniteSystemProperties.IGNITE_DATA_CENTER_ID);
+        dcId = (String)attrs.get(ATTR_DATA_CENTER_ID);
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/datacenter/MultiDataCenterDeploymentTest.java
 
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/datacenter/MultiDataCenterDeploymentTest.java
index 94c3b85b0b3..51a1c6d14ed 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/datacenter/MultiDataCenterDeploymentTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/datacenter/MultiDataCenterDeploymentTest.java
@@ -21,6 +21,7 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.IgniteNodeAttributes;
 import org.apache.ignite.spi.IgniteSpiException;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
 import org.apache.ignite.testframework.junits.WithSystemProperty;
@@ -48,14 +49,6 @@ public class MultiDataCenterDeploymentTest extends 
GridCommonAbstractTest {
         return cfg;
     }
 
-    /** {@inheritDoc} */
-    @Override protected IgniteConfiguration optimize(IgniteConfiguration cfg) 
throws IgniteCheckedException {
-        // super.optimize() method sets includeProperties to a non-null value 
which later leads to
-        // IgniteSystemProperties not being added to node attributes.
-        // This test relies on the presence of IgniteSystemProperties in node 
attributes so we need set includeProperties to null.
-        return super.optimize(cfg).setIncludeProperties((String[])null);
-    }
-
     /** {@inheritDoc} */
     @Override protected void afterTest() throws Exception {
         super.afterTest();
@@ -78,9 +71,9 @@ public class MultiDataCenterDeploymentTest extends 
GridCommonAbstractTest {
         assertNotNull("Data Center ID of the node should not be null", dcId);
         assertEquals(DC_ID_0, dcId);
 
-        String dcIdFromSysProp = 
testGrid.localNode().attribute(IgniteSystemProperties.IGNITE_DATA_CENTER_ID);
-        assertNotNull("Data Center ID of the node should not be null", 
dcIdFromSysProp);
-        assertEquals(DC_ID_0, dcIdFromSysProp);
+        String dcIdFromAttr = 
testGrid.localNode().attribute(IgniteNodeAttributes.ATTR_DATA_CENTER_ID);
+        assertNotNull("Data Center ID of the node should not be null", 
dcIdFromAttr);
+        assertEquals(DC_ID_0, dcIdFromAttr);
     }
 
     /**
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
index d7bdf1e2b21..7ca580580e3 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.testframework.junits;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.ExecutorService;
@@ -149,6 +150,10 @@ public class IgniteMock implements IgniteEx {
                 @Override public GridInternalSubscriptionProcessor 
internalSubscriptionProcessor() {
                     return new GridInternalSubscriptionProcessor(this);
                 }
+
+                @Override public Map<String, Object> nodeAttributes() {
+                    return Collections.emptyMap();
+                }
             };
         }
         catch (IgniteCheckedException e) {
diff --git 
a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java
 
b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java
index 2de06e9b025..e72444fff1c 100644
--- 
a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java
+++ 
b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java
@@ -62,10 +62,9 @@ import 
org.apache.ignite.spi.discovery.zk.internal.ZookeeperDiscoveryImpl;
 import 
org.apache.ignite.spi.discovery.zk.internal.ZookeeperDiscoveryStatistics;
 import org.jetbrains.annotations.Nullable;
 
-import static org.apache.ignite.IgniteCommonsSystemProperties.getString;
 import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_CONSISTENT_ID_BY_HOST_WITHOUT_PORT;
-import static org.apache.ignite.IgniteSystemProperties.IGNITE_DATA_CENTER_ID;
 import static org.apache.ignite.IgniteSystemProperties.getBoolean;
+import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_DATA_CENTER_ID;
 import static 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.DISCO_METRICS;
 
 /**
@@ -527,7 +526,8 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter 
implements IgniteDis
 
         ZookeeperClusterNode locNode = new ZookeeperClusterNode(
             cfg.getNodeId(),
-            getString(IGNITE_DATA_CENTER_ID),
+            //TODO remove usage of internal API when an alternative from 
public API is available
+            
(String)((IgniteEx)ignite).context().nodeAttributes().get(ATTR_DATA_CENTER_ID),
             addrs.get1(),
             addrs.get2(),
             locNodeVer,
diff --git 
a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
 
b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
index 0314899ee16..d70b9d0aaa5 100644
--- 
a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
+++ 
b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
@@ -27,7 +27,6 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
-import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.cache.CacheMetrics;
 import org.apache.ignite.cluster.ClusterMetrics;
 import org.apache.ignite.internal.ClusterMetricsSnapshot;
@@ -41,6 +40,7 @@ import org.apache.ignite.lang.IgniteProductVersion;
 import org.apache.ignite.spi.discovery.DiscoveryMetricsProvider;
 import org.jetbrains.annotations.Nullable;
 
+import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_DATA_CENTER_ID;
 import static 
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_NODE_CONSISTENT_ID;
 import static org.apache.ignite.internal.util.lang.ClusterNodeFunc.eqNodes;
 
@@ -362,7 +362,7 @@ public class ZookeeperClusterNode implements 
IgniteClusterNode, Externalizable,
         if (mtr != null)
             metrics = ClusterMetricsSnapshot.deserialize(mtr, 0);
 
-        dcId = (String)attrs.get(IgniteSystemProperties.IGNITE_DATA_CENTER_ID);
+        dcId = (String)attrs.get(ATTR_DATA_CENTER_ID);
     }
 
     /** {@inheritDoc} */

Reply via email to