You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/12/18 01:41:46 UTC
[shardingsphere] branch master updated: SHOW COMPUTE NODES support display ShardingSphere-Proxy & ShardingSphere-JDBC version (#22932)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new aecfd44049d SHOW COMPUTE NODES support display ShardingSphere-Proxy & ShardingSphere-JDBC version (#22932)
aecfd44049d is described below
commit aecfd44049d5765148ddbd496193b31b7a782a3d
Author: zhaojinchao <zh...@apache.org>
AuthorDate: Sun Dec 18 09:41:31 2022 +0800
SHOW COMPUTE NODES support display ShardingSphere-Proxy & ShardingSphere-JDBC version (#22932)
* Add instance version to online node
* Fix ut
* Fix ci
* Fix unit test
* Fix it
---
.../infra/instance/metadata/InstanceMetaData.java | 7 ++++
.../metadata/InstanceMetaDataBuilderFactory.java | 5 ++-
.../metadata/jdbc/JDBCInstanceMetaData.java | 10 +++++
.../metadata/proxy/ProxyInstanceMetaData.java | 7 +++-
.../InstanceMetaDataBuilderFactoryTest.java | 6 ++-
.../core/connection/ConnectionManagerTest.java | 2 +-
.../algorithm/engine/TrafficEngineTest.java | 4 +-
.../RandomTrafficLoadBalanceAlgorithmTest.java | 3 +-
.../RoundRobinTrafficLoadBalanceAlgorithmTest.java | 4 +-
.../status/compute/pojo/ComputeNodeData.java | 45 ++++++++--------------
.../compute/service/ComputeNodeStatusService.java | 19 ++++++---
.../watcher/ComputeNodeStateChangedWatcher.java | 5 ++-
.../service/ComputeNodeStatusServiceTest.java | 6 ++-
.../ral/queryable/ShowComputeNodeInfoHandler.java | 7 +++-
.../ral/queryable/ShowComputeNodesHandler.java | 6 ++-
.../queryable/ShowComputeNodeInfoHandlerTest.java | 5 ++-
.../ral/queryable/ShowComputeNodesHandlerTest.java | 10 +++--
.../empty_rules/cluster/show_compute_nodes.xml | 3 +-
.../empty_rules/standalone/show_compute_nodes.xml | 3 +-
19 files changed, 97 insertions(+), 60 deletions(-)
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaData.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaData.java
index 55df09e5e82..c2717e2d62f 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaData.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaData.java
@@ -49,4 +49,11 @@ public interface InstanceMetaData {
* @return attributes
*/
String getAttributes();
+
+ /**
+ * Get version.
+ *
+ * @return version
+ */
+ String getVersion();
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataBuilderFactory.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataBuilderFactory.java
index 000ca1cdf56..e15c31795f0 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataBuilderFactory.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataBuilderFactory.java
@@ -51,9 +51,10 @@ public final class InstanceMetaDataBuilderFactory {
* @param instanceId instance ID
* @param instanceType instance type
* @param attributes attributes
+ * @param version version
* @return created instance meta data
*/
- public static InstanceMetaData create(final String instanceId, final InstanceType instanceType, final String attributes) {
- return InstanceType.JDBC == instanceType ? new JDBCInstanceMetaData(instanceId) : new ProxyInstanceMetaData(instanceId, attributes);
+ public static InstanceMetaData create(final String instanceId, final InstanceType instanceType, final String attributes, final String version) {
+ return InstanceType.JDBC == instanceType ? new JDBCInstanceMetaData(instanceId, version) : new ProxyInstanceMetaData(instanceId, attributes, version);
}
}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/jdbc/JDBCInstanceMetaData.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/jdbc/JDBCInstanceMetaData.java
index 42501ae9704..f58a273d830 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/jdbc/JDBCInstanceMetaData.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/jdbc/JDBCInstanceMetaData.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.infra.instance.metadata.jdbc;
import lombok.Getter;
+import org.apache.shardingsphere.infra.autogen.version.ShardingSphereVersion;
import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
import org.apache.shardingsphere.infra.instance.utils.IpUtils;
@@ -32,9 +33,18 @@ public final class JDBCInstanceMetaData implements InstanceMetaData {
private final String ip;
+ private final String version;
+
public JDBCInstanceMetaData(final String id) {
this.id = id;
ip = IpUtils.getIp();
+ this.version = ShardingSphereVersion.VERSION;
+ }
+
+ public JDBCInstanceMetaData(final String id, final String version) {
+ this.id = id;
+ ip = IpUtils.getIp();
+ this.version = version;
}
@Override
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/proxy/ProxyInstanceMetaData.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/proxy/ProxyInstanceMetaData.java
index 9788c0f9881..8b8902eebba 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/proxy/ProxyInstanceMetaData.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/proxy/ProxyInstanceMetaData.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.infra.instance.metadata.proxy;
import com.google.common.base.Joiner;
import lombok.Getter;
+import org.apache.shardingsphere.infra.autogen.version.ShardingSphereVersion;
import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
import org.apache.shardingsphere.infra.instance.utils.IpUtils;
@@ -37,17 +38,21 @@ public final class ProxyInstanceMetaData implements InstanceMetaData {
private final int port;
+ private final String version;
+
public ProxyInstanceMetaData(final String id, final int port) {
this.id = id;
ip = IpUtils.getIp();
this.port = port;
+ version = ShardingSphereVersion.VERSION;
}
- public ProxyInstanceMetaData(final String id, final String attributes) {
+ public ProxyInstanceMetaData(final String id, final String attributes, final String version) {
this.id = id;
String[] attributesList = attributes.split(DELIMITER);
ip = attributesList[0];
port = Integer.parseInt(attributesList[1]);
+ this.version = version;
}
@Override
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataBuilderFactoryTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataBuilderFactoryTest.java
index 55598a88f39..9f84b78853e 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataBuilderFactoryTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataBuilderFactoryTest.java
@@ -48,20 +48,22 @@ public final class InstanceMetaDataBuilderFactoryTest {
@Test
public void assertCreateJDBCInstanceMetaDataWithInstanceId() {
- InstanceMetaData actual = InstanceMetaDataBuilderFactory.create("foo_id", InstanceType.JDBC, "");
+ InstanceMetaData actual = InstanceMetaDataBuilderFactory.create("foo_id", InstanceType.JDBC, "", "foo_version");
assertThat(actual.getId(), is("foo_id"));
assertNotNull(actual.getIp());
assertThat(actual.getAttributes(), is(""));
+ assertThat(actual.getVersion(), is("foo_version"));
assertThat(actual.getType(), is(InstanceType.JDBC));
}
@Test
public void assertCreateProxyInstanceMetaDataWithInstanceId() {
- ProxyInstanceMetaData actual = (ProxyInstanceMetaData) InstanceMetaDataBuilderFactory.create("foo_id", InstanceType.PROXY, "127.0.0.1@3307");
+ ProxyInstanceMetaData actual = (ProxyInstanceMetaData) InstanceMetaDataBuilderFactory.create("foo_id", InstanceType.PROXY, "127.0.0.1@3307", "foo_version");
assertThat(actual.getId(), is("foo_id"));
assertThat(actual.getIp(), is("127.0.0.1"));
assertThat(actual.getPort(), is(3307));
assertThat(actual.getAttributes(), is("127.0.0.1@3307"));
+ assertThat(actual.getVersion(), is("foo_version"));
assertThat(actual.getType(), is(InstanceType.PROXY));
}
}
diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ConnectionManagerTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ConnectionManagerTest.java
index d157815e4b2..03202d29613 100644
--- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ConnectionManagerTest.java
+++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ConnectionManagerTest.java
@@ -91,7 +91,7 @@ public final class ConnectionManagerTest {
when(globalRuleMetaData.getSingleRule(TransactionRule.class)).thenReturn(mock(TransactionRule.class, RETURNS_DEEP_STUBS));
when(globalRuleMetaData.getSingleRule(TrafficRule.class)).thenReturn(mock(TrafficRule.class, RETURNS_DEEP_STUBS));
when(result.getInstanceContext().getAllClusterInstances(InstanceType.PROXY, Arrays.asList("OLTP", "OLAP"))).thenReturn(
- Collections.singletonList(new ProxyInstanceMetaData("foo_id", "127.0.0.1@3307")));
+ Collections.singletonList(new ProxyInstanceMetaData("foo_id", "127.0.0.1@3307", "foo_version")));
dataSourcePoolCreator = mockStatic(DataSourcePoolCreator.class);
Map<String, DataSource> trafficDataSourceMap = mockTrafficDataSourceMap();
when(DataSourcePoolCreator.create((Map) any())).thenReturn(trafficDataSourceMap);
diff --git a/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/engine/TrafficEngineTest.java b/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/engine/TrafficEngineTest.java
index 4e21dc9d040..b758db8a298 100644
--- a/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/engine/TrafficEngineTest.java
+++ b/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/engine/TrafficEngineTest.java
@@ -102,8 +102,8 @@ public final class TrafficEngineTest {
private List<InstanceMetaData> mockComputeNodeInstances() {
List<InstanceMetaData> result = new ArrayList<>();
- result.add(new ProxyInstanceMetaData("foo_id", "127.0.0.1@3307"));
- result.add(new ProxyInstanceMetaData("bar_id", "127.0.0.1@3308"));
+ result.add(new ProxyInstanceMetaData("foo_id", "127.0.0.1@3307", "foo_version"));
+ result.add(new ProxyInstanceMetaData("bar_id", "127.0.0.1@3308", "foo_version"));
return result;
}
}
diff --git a/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/loadbalance/RandomTrafficLoadBalanceAlgorithmTest.java b/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/loadbalance/RandomTrafficLoadBalanceAlgorithmTest.java
index 3e36b6342fa..d72ae2c9296 100644
--- a/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/loadbalance/RandomTrafficLoadBalanceAlgorithmTest.java
+++ b/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/loadbalance/RandomTrafficLoadBalanceAlgorithmTest.java
@@ -31,7 +31,8 @@ public final class RandomTrafficLoadBalanceAlgorithmTest {
@Test
public void assertGetInstanceId() {
RandomTrafficLoadBalanceAlgorithm randomAlgorithm = new RandomTrafficLoadBalanceAlgorithm();
- List<InstanceMetaData> instances = Arrays.asList(new ProxyInstanceMetaData("foo_id", "127.0.0.1@3307"), new ProxyInstanceMetaData("bar_id", "127.0.0.1@3308"));
+ List<InstanceMetaData> instances = Arrays.asList(new ProxyInstanceMetaData("foo_id", "127.0.0.1@3307", "foo_verison"),
+ new ProxyInstanceMetaData("bar_id", "127.0.0.1@3308", "foo_verison"));
assertTrue(instances.contains(randomAlgorithm.getInstanceId("simple_traffic", instances)));
assertTrue(instances.contains(randomAlgorithm.getInstanceId("simple_traffic", instances)));
assertTrue(instances.contains(randomAlgorithm.getInstanceId("simple_traffic", instances)));
diff --git a/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/loadbalance/RoundRobinTrafficLoadBalanceAlgorithmTest.java b/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/loadbalance/RoundRobinTrafficLoadBalanceAlgorithmTest.java
index 092cd795427..4d4afc5ea92 100644
--- a/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/loadbalance/RoundRobinTrafficLoadBalanceAlgorithmTest.java
+++ b/kernel/traffic/core/src/test/java/org/apache/shardingsphere/traffic/algorithm/loadbalance/RoundRobinTrafficLoadBalanceAlgorithmTest.java
@@ -31,8 +31,8 @@ public final class RoundRobinTrafficLoadBalanceAlgorithmTest {
@Test
public void assertGetInstanceId() {
- InstanceMetaData instance1 = new ProxyInstanceMetaData("127.0.0.1@3307", "127.0.0.1@3307");
- InstanceMetaData instance2 = new ProxyInstanceMetaData("127.0.0.1@3308", "127.0.0.1@3308");
+ InstanceMetaData instance1 = new ProxyInstanceMetaData("127.0.0.1@3307", "127.0.0.1@3307", "foo_version");
+ InstanceMetaData instance2 = new ProxyInstanceMetaData("127.0.0.1@3308", "127.0.0.1@3308", "foo_version");
List<InstanceMetaData> instances = Arrays.asList(instance1, instance2);
RoundRobinTrafficLoadBalanceAlgorithm roundRobinAlgorithm = new RoundRobinTrafficLoadBalanceAlgorithm();
assertThat(roundRobinAlgorithm.getInstanceId("simple_traffic", instances), is(instance1));
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaData.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/pojo/ComputeNodeData.java
similarity index 61%
copy from infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaData.java
copy to mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/pojo/ComputeNodeData.java
index 55df09e5e82..ffe4242d549 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaData.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/pojo/ComputeNodeData.java
@@ -15,38 +15,23 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.instance.metadata;
+package org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.pojo;
-/**
- * Instance meta data.
- */
-public interface InstanceMetaData {
-
- /**
- * Get instance ID.
- *
- * @return instance ID
- */
- String getId();
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@NoArgsConstructor
+@Getter
+@Setter
+public final class ComputeNodeData {
- /**
- * Get instance type.
- *
- * @return instance type
- */
- InstanceType getType();
+ private String attribute;
- /**
- * Get IP.
- *
- * @return IP
- */
- String getIp();
+ private String version;
- /**
- * Get attributes.
- *
- * @return attributes
- */
- String getAttributes();
+ public ComputeNodeData(final String attribute, final String version) {
+ this.attribute = attribute;
+ this.version = version;
+ }
}
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/service/ComputeNodeStatusService.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/service/ComputeNodeStatusService.java
index 35d8dbf57f4..478060272e3 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/service/ComputeNodeStatusService.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/service/ComputeNodeStatusService.java
@@ -20,12 +20,14 @@ package org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.stat
import com.google.common.base.Strings;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.infra.autogen.version.ShardingSphereVersion;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaDataBuilderFactory;
import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
import org.apache.shardingsphere.infra.state.StateContext;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
+import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.pojo.ComputeNodeData;
import org.apache.shardingsphere.mode.metadata.persist.node.ComputeNode;
import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
@@ -34,7 +36,6 @@ import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Optional;
-import java.util.stream.Collectors;
/**
* Compute node status service.
@@ -51,7 +52,8 @@ public final class ComputeNodeStatusService {
* @param instanceMetaData instance definition
*/
public void registerOnline(final InstanceMetaData instanceMetaData) {
- repository.persistEphemeral(ComputeNode.getOnlineInstanceNodePath(instanceMetaData.getId(), instanceMetaData.getType()), instanceMetaData.getAttributes());
+ repository.persistEphemeral(ComputeNode.getOnlineInstanceNodePath(instanceMetaData.getId(), instanceMetaData.getType()),
+ YamlEngine.marshal(new ComputeNodeData(instanceMetaData.getAttributes(), ShardingSphereVersion.VERSION)));
}
/**
@@ -139,9 +141,16 @@ public final class ComputeNodeStatusService {
}
private Collection<ComputeNodeInstance> loadComputeNodeInstances(final InstanceType instanceType) {
- Collection<String> onlineComputeNodes = repository.getChildrenKeys(ComputeNode.getOnlineNodePath(instanceType));
- return onlineComputeNodes.stream().map(each -> loadComputeNodeInstance(
- InstanceMetaDataBuilderFactory.create(each, instanceType, repository.getDirectly(ComputeNode.getOnlineInstanceNodePath(each, instanceType))))).collect(Collectors.toList());
+ Collection<ComputeNodeInstance> result = new LinkedList<>();
+ for (String each : repository.getChildrenKeys(ComputeNode.getOnlineNodePath(instanceType))) {
+ String value = repository.getDirectly(ComputeNode.getOnlineInstanceNodePath(each, instanceType));
+ if (Strings.isNullOrEmpty(value)) {
+ continue;
+ }
+ ComputeNodeData computeNodeData = YamlEngine.unmarshal(value, ComputeNodeData.class);
+ result.add(loadComputeNodeInstance(InstanceMetaDataBuilderFactory.create(each, instanceType, computeNodeData.getAttribute(), computeNodeData.getVersion())));
+ }
+ return result;
}
/**
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/watcher/ComputeNodeStateChangedWatcher.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/watcher/ComputeNodeStateChangedWatcher.java
index 9bff63168e1..ace906c5a2e 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/watcher/ComputeNodeStateChangedWatcher.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/watcher/ComputeNodeStateChangedWatcher.java
@@ -33,6 +33,7 @@ import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.statu
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.event.ShowProcessListUnitCompleteEvent;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.event.StateEvent;
import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.event.WorkerIdEvent;
+import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.pojo.ComputeNodeData;
import org.apache.shardingsphere.mode.metadata.persist.node.ComputeNode;
import org.apache.shardingsphere.mode.repository.cluster.listener.DataChangedEvent;
import org.apache.shardingsphere.mode.repository.cluster.listener.DataChangedEvent.Type;
@@ -90,7 +91,9 @@ public final class ComputeNodeStateChangedWatcher implements GovernanceWatcher<G
private Optional<GovernanceEvent> createInstanceEvent(final DataChangedEvent event) {
Matcher matcher = matchInstanceOnlinePath(event.getKey());
if (matcher.find()) {
- InstanceMetaData instanceMetaData = InstanceMetaDataBuilderFactory.create(matcher.group(2), InstanceType.valueOf(matcher.group(1).toUpperCase()), event.getValue());
+ ComputeNodeData computeNodeData = YamlEngine.unmarshal(event.getValue(), ComputeNodeData.class);
+ InstanceMetaData instanceMetaData = InstanceMetaDataBuilderFactory.create(matcher.group(2),
+ InstanceType.valueOf(matcher.group(1).toUpperCase()), computeNodeData.getAttribute(), computeNodeData.getVersion());
if (Type.ADDED == event.getType()) {
return Optional.of(new InstanceOnlineEvent(instanceMetaData));
}
diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/service/ComputeNodeStatusServiceTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/service/ComputeNodeStatusServiceTest.java
index 8fb3a109b9d..8ee1fe90da3 100644
--- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/service/ComputeNodeStatusServiceTest.java
+++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/service/ComputeNodeStatusServiceTest.java
@@ -25,6 +25,7 @@ import org.apache.shardingsphere.infra.instance.utils.IpUtils;
import org.apache.shardingsphere.infra.state.StateContext;
import org.apache.shardingsphere.infra.state.StateType;
import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
+import org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.pojo.ComputeNodeData;
import org.apache.shardingsphere.mode.metadata.persist.node.ComputeNode;
import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
import org.junit.Test;
@@ -113,7 +114,10 @@ public final class ComputeNodeStatusServiceTest {
public void assertLoadAllComputeNodeInstances() {
when(repository.getChildrenKeys("/nodes/compute_nodes/online/jdbc")).thenReturn(Collections.singletonList("foo_instance_3307"));
when(repository.getChildrenKeys("/nodes/compute_nodes/online/proxy")).thenReturn(Collections.singletonList("foo_instance_3308"));
- when(repository.getDirectly("/nodes/compute_nodes/online/proxy/foo_instance_3308")).thenReturn("127.0.0.1@3308");
+ when(repository.getDirectly("/nodes/compute_nodes/online/jdbc/foo_instance_3307"))
+ .thenReturn(YamlEngine.marshal(new ComputeNodeData("127.0.0.1@3307", "foo_version")));
+ when(repository.getDirectly("/nodes/compute_nodes/online/proxy/foo_instance_3308"))
+ .thenReturn(YamlEngine.marshal(new ComputeNodeData("127.0.0.1@3308", "foo_version")));
List<ComputeNodeInstance> actual = new ArrayList<>(new ComputeNodeStatusService(repository).loadAllComputeNodeInstances());
assertThat(actual.size(), is(2));
assertThat(actual.get(0).getMetaData().getId(), is("foo_instance_3307"));
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoHandler.java
index 71103604616..267c7152aeb 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoHandler.java
@@ -48,9 +48,11 @@ public final class ShowComputeNodeInfoHandler extends QueryableRALBackendHandler
private static final String LABELS = "labels";
+ private static final String VERSION = "version";
+
@Override
protected Collection<String> getColumnNames() {
- return Arrays.asList(ID, HOST, PORT, STATUS, MODE_TYPE, WORKER_ID, LABELS);
+ return Arrays.asList(ID, HOST, PORT, STATUS, MODE_TYPE, WORKER_ID, LABELS, VERSION);
}
@Override
@@ -60,6 +62,7 @@ public final class ShowComputeNodeInfoHandler extends QueryableRALBackendHandler
String modeType = contextManager.getInstanceContext().getModeConfiguration().getType();
return Collections.singletonList(new LocalDataQueryResultRow(instanceMetaData.getId(), instanceMetaData.getIp(),
instanceMetaData instanceof ProxyInstanceMetaData ? ((ProxyInstanceMetaData) instanceMetaData).getPort() : -1,
- instance.getState().getCurrentState().name(), modeType, instance.getWorkerId(), String.join(",", instance.getLabels())));
+ instance.getState().getCurrentState().name(), modeType, instance.getWorkerId(), String.join(",", instance.getLabels()),
+ instanceMetaData.getVersion()));
}
}
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesHandler.java
index 81cfd411544..d708e408ca6 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesHandler.java
@@ -51,9 +51,11 @@ public final class ShowComputeNodesHandler extends QueryableRALBackendHandler<Sh
private static final String LABELS = "labels";
+ private static final String VERSION = "version";
+
@Override
protected Collection<String> getColumnNames() {
- return Arrays.asList(ID, HOST, PORT, STATUS, MODE_TYPE, WORKER_ID, LABELS);
+ return Arrays.asList(ID, HOST, PORT, STATUS, MODE_TYPE, WORKER_ID, LABELS, VERSION);
}
@Override
@@ -72,6 +74,6 @@ public final class ShowComputeNodesHandler extends QueryableRALBackendHandler<Sh
InstanceMetaData instanceMetaData = instance.getMetaData();
return new LocalDataQueryResultRow(instanceMetaData.getId(), instanceMetaData.getIp(),
instanceMetaData instanceof ProxyInstanceMetaData ? ((ProxyInstanceMetaData) instanceMetaData).getPort() : -1,
- instance.getState().getCurrentState().name(), modeType, instance.getWorkerId(), labels);
+ instance.getState().getCurrentState().name(), modeType, instance.getWorkerId(), labels, instanceMetaData.getVersion());
}
}
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoHandlerTest.java
index c74499c470e..eab3b02b492 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodeInfoHandlerTest.java
@@ -51,7 +51,7 @@ public final class ShowComputeNodeInfoHandlerTest extends ProxyContextRestorer {
handler.execute();
handler.next();
List<Object> data = handler.getRowData().getData();
- assertThat(data.size(), is(7));
+ assertThat(data.size(), is(8));
assertThat(data.get(0), is("127.0.0.1@3309"));
assertThat(data.get(1), is("127.0.0.1"));
assertThat(data.get(2), is(3309));
@@ -59,11 +59,12 @@ public final class ShowComputeNodeInfoHandlerTest extends ProxyContextRestorer {
assertThat(data.get(4), is("Standalone"));
assertThat(data.get(5), is(0));
assertThat(data.get(6), is(""));
+ assertThat(data.get(7), is("foo_version"));
}
private InstanceContext createInstanceContext() {
InstanceContext result = mock(InstanceContext.class, RETURNS_DEEP_STUBS);
- when(result.getInstance().getMetaData()).thenReturn(new ProxyInstanceMetaData("127.0.0.1@3309", "127.0.0.1@3309"));
+ when(result.getInstance().getMetaData()).thenReturn(new ProxyInstanceMetaData("127.0.0.1@3309", "127.0.0.1@3309", "foo_version"));
when(result.getInstance().getState()).thenReturn(new StateContext());
when(result.getModeConfiguration()).thenReturn(new ModeConfiguration("Standalone", new StandalonePersistRepositoryConfiguration("H2", new Properties())));
when(result.getInstance().getWorkerId()).thenReturn(0);
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesHandlerTest.java
index 7ce39ac0bc8..040157b1252 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowComputeNodesHandlerTest.java
@@ -55,7 +55,7 @@ public final class ShowComputeNodesHandlerTest extends ProxyContextRestorer {
handler.execute();
handler.next();
List<Object> data = handler.getRowData().getData();
- assertThat(data.size(), is(7));
+ assertThat(data.size(), is(8));
assertThat(data.get(0), is("127.0.0.1@3308"));
assertThat(data.get(1), is("127.0.0.1"));
assertThat(data.get(2), is(3308));
@@ -63,6 +63,7 @@ public final class ShowComputeNodesHandlerTest extends ProxyContextRestorer {
assertThat(data.get(4), is("Standalone"));
assertThat(data.get(5), is(0));
assertThat(data.get(6), is(""));
+ assertThat(data.get(7), is("foo_version"));
}
@Test
@@ -75,7 +76,7 @@ public final class ShowComputeNodesHandlerTest extends ProxyContextRestorer {
handler.execute();
handler.next();
List<Object> data = handler.getRowData().getData();
- assertThat(data.size(), is(7));
+ assertThat(data.size(), is(8));
assertThat(data.get(0), is("127.0.0.1@3309"));
assertThat(data.get(1), is("127.0.0.1"));
assertThat(data.get(2), is(3309));
@@ -83,11 +84,12 @@ public final class ShowComputeNodesHandlerTest extends ProxyContextRestorer {
assertThat(data.get(4), is("Cluster"));
assertThat(data.get(5), is(1));
assertThat(data.get(6), is(""));
+ assertThat(data.get(7), is("foo_version"));
}
private InstanceContext createStandaloneInstanceContext() {
InstanceContext result = mock(InstanceContext.class, RETURNS_DEEP_STUBS);
- when(result.getInstance().getMetaData()).thenReturn(new ProxyInstanceMetaData("127.0.0.1@3308", "127.0.0.1@3308"));
+ when(result.getInstance().getMetaData()).thenReturn(new ProxyInstanceMetaData("127.0.0.1@3308", "127.0.0.1@3308", "foo_version"));
when(result.getInstance().getState()).thenReturn(new StateContext());
when(result.getModeConfiguration()).thenReturn(new ModeConfiguration("Standalone", new StandalonePersistRepositoryConfiguration("H2", new Properties())));
when(result.getInstance().getWorkerId()).thenReturn(0);
@@ -98,7 +100,7 @@ public final class ShowComputeNodesHandlerTest extends ProxyContextRestorer {
InstanceContext result = mock(InstanceContext.class, RETURNS_DEEP_STUBS);
when(result.getModeConfiguration()).thenReturn(new ModeConfiguration("Cluster", mock(PersistRepositoryConfiguration.class)));
ComputeNodeInstance computeNodeInstance = mock(ComputeNodeInstance.class, RETURNS_DEEP_STUBS);
- when(computeNodeInstance.getMetaData()).thenReturn(new ProxyInstanceMetaData("127.0.0.1@3309", "127.0.0.1@3309"));
+ when(computeNodeInstance.getMetaData()).thenReturn(new ProxyInstanceMetaData("127.0.0.1@3309", "127.0.0.1@3309", "foo_version"));
when(computeNodeInstance.getState()).thenReturn(new StateContext());
when(computeNodeInstance.getWorkerId()).thenReturn(1);
when(result.getAllClusterInstances()).thenReturn(Collections.singleton(computeNodeInstance));
diff --git a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/show_compute_nodes.xml b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/show_compute_nodes.xml
index a74f148248e..945ec62befe 100644
--- a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/show_compute_nodes.xml
+++ b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/show_compute_nodes.xml
@@ -24,6 +24,7 @@
<column name="mode_type" />
<column name="worker_id" />
<column name="labels" />
+ <column name="version" assertion="false"/>
</metadata>
- <row values=" | | 3307| OK| Cluster| 0| " />
+ <row values=" | | 3307| OK| Cluster| 0| |" />
</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/standalone/show_compute_nodes.xml b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/standalone/show_compute_nodes.xml
index c4bb8c10f46..12e5b672b84 100644
--- a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/standalone/show_compute_nodes.xml
+++ b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/standalone/show_compute_nodes.xml
@@ -24,6 +24,7 @@
<column name="mode_type" />
<column name="worker_id" />
<column name="labels" />
+ <column name="version" assertion="false"/>
</metadata>
- <row values=" | | 3307| OK| Standalone| 0| " />
+ <row values=" | | 3307| OK| Standalone| 0| |" />
</dataset>