This is an automated email from the ASF dual-hosted git repository.
isapego 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 9461f2af7db IGNITE-25202 Add clusterId method to IgniteCluster
interface (#6469)
9461f2af7db is described below
commit 9461f2af7dbeed4871fba6da2e8ac884b2a2e5cc
Author: Tiago Marques Godinho <[email protected]>
AuthorDate: Fri Aug 29 13:10:46 2025 +0100
IGNITE-25202 Add clusterId method to IgniteCluster interface (#6469)
Co-authored-by: Pavel Tupitsyn <[email protected]>
---
.../main/java/org/apache/ignite/network/IgniteCluster.java | 8 ++++++++
.../ignite/client/handler/ClientInboundMessageHandler.java | 6 +++++-
.../ignite/internal/client/network/ClientCluster.java | 6 ++++++
.../apache/ignite/internal/network/IgniteClusterImpl.java | 13 ++++++++++++-
.../internal/network/PublicApiThreadingIgniteCluster.java | 6 ++++++
.../internal/network/ItAbstractIgniteClusterTest.java | 8 ++++++++
.../java/org/apache/ignite/internal/app/IgniteImpl.java | 2 +-
.../ignite/internal/restart/RestartProofIgniteCluster.java | 6 ++++++
8 files changed, 52 insertions(+), 3 deletions(-)
diff --git
a/modules/api/src/main/java/org/apache/ignite/network/IgniteCluster.java
b/modules/api/src/main/java/org/apache/ignite/network/IgniteCluster.java
index c95dcdc58d4..26140bf3909 100644
--- a/modules/api/src/main/java/org/apache/ignite/network/IgniteCluster.java
+++ b/modules/api/src/main/java/org/apache/ignite/network/IgniteCluster.java
@@ -18,6 +18,7 @@
package org.apache.ignite.network;
import java.util.Collection;
+import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import org.jetbrains.annotations.Nullable;
@@ -25,6 +26,13 @@ import org.jetbrains.annotations.Nullable;
* Represents an Ignite cluster, providing access to the cluster nodes and the
local node.
*/
public interface IgniteCluster {
+ /**
+ * Returns the current cluster ID.
+ *
+ * @return Cluster's current ID.
+ */
+ UUID id();
+
/**
* Returns all cluster nodes that are part of the logical topology,
including the local node if applicable.
*
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
index 672ee1333b5..e75971c2f80 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
@@ -325,7 +325,11 @@ public class ClientInboundMessageHandler
this.configuration = configuration;
this.compute = compute;
this.clusterService = clusterService;
- this.cluster = new IgniteClusterImpl(clusterService.topologyService());
+ this.cluster = new IgniteClusterImpl(clusterService.topologyService(),
() -> {
+ ClusterInfo clusterInfo = clusterInfoSupplier.get();
+ List<UUID> idHistory = clusterInfo.idHistory();
+ return (idHistory.isEmpty()) ? null :
idHistory.get(idHistory.size() - 1);
+ });
this.queryProcessor = processor;
this.clusterInfoSupplier = clusterInfoSupplier;
this.metrics = metrics;
diff --git
a/modules/client/src/main/java/org/apache/ignite/internal/client/network/ClientCluster.java
b/modules/client/src/main/java/org/apache/ignite/internal/client/network/ClientCluster.java
index 03bcc3d85c0..07bd1cbba74 100644
---
a/modules/client/src/main/java/org/apache/ignite/internal/client/network/ClientCluster.java
+++
b/modules/client/src/main/java/org/apache/ignite/internal/client/network/ClientCluster.java
@@ -23,6 +23,7 @@ import static org.apache.ignite.internal.util.ViewUtils.sync;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import org.apache.ignite.internal.client.ReliableChannel;
import org.apache.ignite.internal.client.proto.ClientOp;
@@ -40,6 +41,11 @@ public class ClientCluster implements IgniteCluster {
this.ch = ch;
}
+ @Override
+ public UUID id() {
+ return ch.clusterId();
+ }
+
/** {@inheritDoc} */
@Override
public Collection<ClusterNode> nodes() {
diff --git
a/modules/network-api/src/main/java/org/apache/ignite/internal/network/IgniteClusterImpl.java
b/modules/network-api/src/main/java/org/apache/ignite/internal/network/IgniteClusterImpl.java
index f9e98221843..f45f646f258 100644
---
a/modules/network-api/src/main/java/org/apache/ignite/internal/network/IgniteClusterImpl.java
+++
b/modules/network-api/src/main/java/org/apache/ignite/internal/network/IgniteClusterImpl.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.network;
import static java.util.concurrent.CompletableFuture.completedFuture;
import java.util.Collection;
+import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import org.apache.ignite.network.ClusterNode;
import org.apache.ignite.network.IgniteCluster;
@@ -31,8 +32,18 @@ import org.jetbrains.annotations.Nullable;
public class IgniteClusterImpl implements IgniteCluster {
public final TopologyService topologyService;
- public IgniteClusterImpl(TopologyService topologyService) {
+ public final ClusterIdSupplier clusterIdSupplier;
+
+ public IgniteClusterImpl(TopologyService topologyService,
ClusterIdSupplier clusterIdSupplier) {
this.topologyService = topologyService;
+ this.clusterIdSupplier = clusterIdSupplier;
+ }
+
+ @Override
+ public UUID id() {
+ @Nullable UUID ret = clusterIdSupplier.clusterId();
+ assert ret != null : "clusterId not available";
+ return ret;
}
@Override
diff --git
a/modules/network-api/src/main/java/org/apache/ignite/internal/network/PublicApiThreadingIgniteCluster.java
b/modules/network-api/src/main/java/org/apache/ignite/internal/network/PublicApiThreadingIgniteCluster.java
index 7ee0bb0cfcb..fad28dc7c08 100644
---
a/modules/network-api/src/main/java/org/apache/ignite/internal/network/PublicApiThreadingIgniteCluster.java
+++
b/modules/network-api/src/main/java/org/apache/ignite/internal/network/PublicApiThreadingIgniteCluster.java
@@ -21,6 +21,7 @@ import static
java.util.concurrent.CompletableFuture.completedFuture;
import static
org.apache.ignite.internal.thread.PublicApiThreading.execUserSyncOperation;
import java.util.Collection;
+import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import org.apache.ignite.internal.wrapper.Wrapper;
import org.apache.ignite.network.ClusterNode;
@@ -44,6 +45,11 @@ public class PublicApiThreadingIgniteCluster implements
IgniteCluster, Wrapper {
return classToUnwrap.cast(cluster);
}
+ @Override
+ public UUID id() {
+ return execUserSyncOperation(cluster::id);
+ }
+
@Override
public Collection<ClusterNode> nodes() {
return execUserSyncOperation(cluster::nodes);
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/network/ItAbstractIgniteClusterTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/network/ItAbstractIgniteClusterTest.java
index e114159dbbe..35b0ed419e7 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/network/ItAbstractIgniteClusterTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/network/ItAbstractIgniteClusterTest.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.network;
+import static org.apache.ignite.internal.TestWrappers.unwrapIgniteImpl;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
@@ -24,6 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
+import java.util.UUID;
import java.util.stream.Collectors;
import org.apache.ignite.Ignite;
import org.apache.ignite.internal.ClusterPerClassIntegrationTest;
@@ -103,4 +105,10 @@ public abstract class ItAbstractIgniteClusterTest extends
ClusterPerClassIntegra
assertNull(localNode.nodeMetadata());
}
}
+
+ @Test
+ void testClusterId() {
+ UUID expected =
unwrapIgniteImpl(node(0)).clusterIdService().clusterId();
+ assertEquals(expected, ignite().cluster().id());
+ }
}
diff --git
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
index 4e5df51023a..89a264f77d7 100644
---
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
+++
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
@@ -1314,7 +1314,7 @@ public class IgniteImpl implements Ignite {
publicSql = new PublicApiThreadingIgniteSql(sql,
asyncContinuationExecutor);
publicCompute = new AntiHijackIgniteCompute(compute,
asyncContinuationExecutor);
publicCatalog = new PublicApiThreadingIgniteCatalog(new
IgniteCatalogSqlImpl(sql, distributedTblMgr), asyncContinuationExecutor);
- publicCluster = new PublicApiThreadingIgniteCluster(new
IgniteClusterImpl(clusterSvc.topologyService()));
+ publicCluster = new PublicApiThreadingIgniteCluster(new
IgniteClusterImpl(clusterSvc.topologyService(), clusterIdService));
}
private GroupStoragesContextResolver createGroupStoragesContextResolver() {
diff --git
a/modules/runner/src/main/java/org/apache/ignite/internal/restart/RestartProofIgniteCluster.java
b/modules/runner/src/main/java/org/apache/ignite/internal/restart/RestartProofIgniteCluster.java
index 8b0219dbf69..8a8d40b4afd 100644
---
a/modules/runner/src/main/java/org/apache/ignite/internal/restart/RestartProofIgniteCluster.java
+++
b/modules/runner/src/main/java/org/apache/ignite/internal/restart/RestartProofIgniteCluster.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.restart;
import java.util.Collection;
+import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import org.apache.ignite.Ignite;
import org.apache.ignite.internal.wrapper.Wrapper;
@@ -45,6 +46,11 @@ public class RestartProofIgniteCluster implements
IgniteCluster, Wrapper {
return attachmentLock.attached(ignite ->
Wrappers.unwrap(ignite.cluster(), classToUnwrap));
}
+ @Override
+ public UUID id() {
+ return attachmentLock.attached(ignite -> ignite.cluster().id());
+ }
+
@Override
public Collection<ClusterNode> nodes() {
return attachmentLock.attached(ignite -> ignite.cluster().nodes());