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} */