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

apkhmv 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 d62471e0d1 IGNITE-21989 Get topology in the JDBC URL completer 
directly (#3555)
d62471e0d1 is described below

commit d62471e0d1a1f62f0899a35d495ba169fa5b0afe
Author: Vadim Pakhnushev <8614891+valep...@users.noreply.github.com>
AuthorDate: Fri Apr 5 10:22:01 2024 +0300

    IGNITE-21989 Get topology in the JDBC URL completer directly (#3555)
---
 .../repl/executor/ItIgnitePicocliCommandsTest.java |  5 ++---
 .../repl/registry/impl/JdbcUrlRegistryImpl.java    | 25 +++++++++++++---------
 .../repl/registry/impl/NodeNameRegistryImpl.java   |  2 +-
 3 files changed, 18 insertions(+), 14 deletions(-)

diff --git 
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java
 
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java
index 25637f5144..9efe7ebadc 100644
--- 
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java
+++ 
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java
@@ -389,11 +389,10 @@ public class ItIgnitePicocliCommandsTest extends 
CliIntegrationTest {
 
         // When stop one node
         CLUSTER.stopNode(nodeIndex);
-        var actualNodeNames = allNodeNames();
-        actualNodeNames.remove(igniteNodeName);
+        assertThat(allNodeNames(), not(hasItem(igniteNodeName)));
 
         // Then node name suggestions does not contain the stopped node
-        await().until(() -> complete(givenParsedLine), 
containsInAnyOrder(actualNodeNames.toArray()));
+        await().until(() -> complete(givenParsedLine), 
containsInAnyOrder(allNodeNames().toArray()));
 
         // When start the node again
         CLUSTER.startNode(nodeIndex);
diff --git 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/registry/impl/JdbcUrlRegistryImpl.java
 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/registry/impl/JdbcUrlRegistryImpl.java
index 2d3df416c7..305f23f508 100644
--- 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/registry/impl/JdbcUrlRegistryImpl.java
+++ 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/registry/impl/JdbcUrlRegistryImpl.java
@@ -21,16 +21,18 @@ import jakarta.inject.Singleton;
 import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
+import 
org.apache.ignite.internal.cli.call.cluster.topology.PhysicalTopologyCall;
 import org.apache.ignite.internal.cli.core.JdbcUrlFactory;
+import org.apache.ignite.internal.cli.core.call.UrlCallInput;
 import org.apache.ignite.internal.cli.core.repl.PeriodicSessionTask;
 import org.apache.ignite.internal.cli.core.repl.SessionInfo;
 import org.apache.ignite.internal.cli.core.repl.registry.JdbcUrlRegistry;
-import org.apache.ignite.internal.cli.core.repl.registry.NodeNameRegistry;
 import org.apache.ignite.internal.cli.core.rest.ApiClientFactory;
 import org.apache.ignite.internal.cli.logger.CliLoggers;
 import org.apache.ignite.internal.logger.IgniteLogger;
 import org.apache.ignite.rest.client.api.NodeManagementApi;
 import org.apache.ignite.rest.client.invoker.ApiException;
+import org.apache.ignite.rest.client.model.ClusterNode;
 import org.apache.ignite.rest.client.model.NodeInfo;
 import org.jetbrains.annotations.Nullable;
 
@@ -40,7 +42,7 @@ public class JdbcUrlRegistryImpl implements JdbcUrlRegistry, 
PeriodicSessionTask
 
     private static final IgniteLogger LOG = 
CliLoggers.forClass(JdbcUrlRegistryImpl.class);
 
-    private final NodeNameRegistry nodeNameRegistry;
+    private final PhysicalTopologyCall physicalTopologyCall;
 
     private final ApiClientFactory clientFactory;
 
@@ -49,15 +51,15 @@ public class JdbcUrlRegistryImpl implements 
JdbcUrlRegistry, PeriodicSessionTask
     private volatile Set<String> jdbcUrls = Set.of();
 
     /** Constructor. */
-    public JdbcUrlRegistryImpl(NodeNameRegistry nodeNameRegistry, 
ApiClientFactory clientFactory, JdbcUrlFactory jdbcUrlFactory) {
-        this.nodeNameRegistry = nodeNameRegistry;
+    public JdbcUrlRegistryImpl(PhysicalTopologyCall physicalTopologyCall, 
ApiClientFactory clientFactory, JdbcUrlFactory jdbcUrlFactory) {
+        this.physicalTopologyCall = physicalTopologyCall;
         this.clientFactory = clientFactory;
         this.jdbcUrlFactory = jdbcUrlFactory;
     }
 
     @Override
     public void update(SessionInfo sessionInfo) {
-        jdbcUrls = nodeNameRegistry.urls()
+        jdbcUrls = physicalTopologyCall.execute(new 
UrlCallInput(sessionInfo.nodeUrl())).body()
                 .stream()
                 .map(this::fetchJdbcUrl)
                 .filter(Objects::nonNull)
@@ -76,13 +78,16 @@ public class JdbcUrlRegistryImpl implements 
JdbcUrlRegistry, PeriodicSessionTask
     }
 
     @Nullable
-    private String fetchJdbcUrl(String nodeUrl) {
+    private String fetchJdbcUrl(ClusterNode node) {
         try {
-            NodeInfo nodeInfo = new 
NodeManagementApi(clientFactory.getClient(nodeUrl)).nodeInfo();
-            return jdbcUrlFactory.constructJdbcUrl(nodeUrl, 
nodeInfo.getJdbcPort());
+            String nodeUrl = 
NodeNameRegistryImpl.urlFromClusterNode(node.getMetadata());
+            if (nodeUrl != null) {
+                NodeInfo nodeInfo = new 
NodeManagementApi(clientFactory.getClient(nodeUrl)).nodeInfo();
+                return jdbcUrlFactory.constructJdbcUrl(nodeUrl, 
nodeInfo.getJdbcPort());
+            }
         } catch (ApiException e) {
-            LOG.warn("Couldn't fetch jdbc url of " + nodeUrl + " node: ", e);
-            return null;
+            LOG.warn("Couldn't fetch jdbc url of node {}", e, node.getName());
         }
+        return null;
     }
 }
diff --git 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/registry/impl/NodeNameRegistryImpl.java
 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/registry/impl/NodeNameRegistryImpl.java
index aa1e21ab6c..a141fccafe 100644
--- 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/registry/impl/NodeNameRegistryImpl.java
+++ 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/registry/impl/NodeNameRegistryImpl.java
@@ -87,7 +87,7 @@ public class NodeNameRegistryImpl implements 
NodeNameRegistry, PeriodicSessionTa
     }
 
     @Nullable
-    private static String urlFromClusterNode(ClusterNodeMetadata metadata) {
+    static String urlFromClusterNode(@Nullable ClusterNodeMetadata metadata) {
         if (metadata == null) {
             return null;
         }

Reply via email to