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 <[email protected]>
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;
}