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());

Reply via email to