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; }