diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactory.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactory.java index 4fe6a173fba27..4eee8cc2d6002 100644 --- a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactory.java +++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactory.java @@ -19,6 +19,7 @@ import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.apache.shardingsphere.infra.instance.ComputeNodeData; import org.apache.shardingsphere.infra.instance.metadata.jdbc.JDBCInstanceMetaData; import org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData; @@ -33,12 +34,12 @@ public final class InstanceMetaDataFactory { * * @param instanceId instance ID * @param instanceType instance type - * @param attributes attributes - * @param version version - * @param databaseName database name + * @param computeNodeData compute node data * @return created instance meta data */ - public static InstanceMetaData create(final String instanceId, final InstanceType instanceType, final String attributes, final String version, final String databaseName) { - return InstanceType.JDBC == instanceType ? new JDBCInstanceMetaData(instanceId, attributes, version, databaseName) : new ProxyInstanceMetaData(instanceId, attributes, version); + public static InstanceMetaData create(final String instanceId, final InstanceType instanceType, final ComputeNodeData computeNodeData) { + return InstanceType.JDBC == instanceType + ? new JDBCInstanceMetaData(instanceId, computeNodeData.getAttribute(), computeNodeData.getVersion(), computeNodeData.getDatabaseName()) + : new ProxyInstanceMetaData(instanceId, computeNodeData.getAttribute(), computeNodeData.getVersion()); } } diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactoryTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactoryTest.java index de5e15a5b6d4d..bfb2fc7fa7fed 100644 --- a/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactoryTest.java +++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/instance/metadata/InstanceMetaDataFactoryTest.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.infra.instance.metadata; +import org.apache.shardingsphere.infra.instance.ComputeNodeData; import org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData; import org.junit.jupiter.api.Test; @@ -28,7 +29,7 @@ class InstanceMetaDataFactoryTest { @Test void assertCreateJDBCInstanceMetaDataWithInstanceId() { - InstanceMetaData actual = InstanceMetaDataFactory.create("foo_id", InstanceType.JDBC, "127.0.0.1", "foo_version", "foo_db"); + InstanceMetaData actual = InstanceMetaDataFactory.create("foo_id", InstanceType.JDBC, new ComputeNodeData("foo_db", "127.0.0.1", "foo_version")); assertThat(actual.getId(), is("foo_id")); assertNotNull(actual.getIp()); assertThat(actual.getAttributes(), is("127.0.0.1")); @@ -38,7 +39,7 @@ void assertCreateJDBCInstanceMetaDataWithInstanceId() { @Test void assertCreateProxyInstanceMetaDataWithInstanceId() { - ProxyInstanceMetaData actual = (ProxyInstanceMetaData) InstanceMetaDataFactory.create("foo_id", InstanceType.PROXY, "127.0.0.1@3307", "foo_version", "foo_db"); + ProxyInstanceMetaData actual = (ProxyInstanceMetaData) InstanceMetaDataFactory.create("foo_id", InstanceType.PROXY, new ComputeNodeData("foo_db", "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)); diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java index 79cd199c4a53f..bdc19463920b9 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/unified/ComputeNodePersistService.java @@ -137,8 +137,8 @@ private Collection loadComputeNodeInstances(final InstanceT if (Strings.isNullOrEmpty(value)) { continue; } - ComputeNodeData computeNodeData = new YamlComputeNodeDataSwapper().swapToObject(YamlEngine.unmarshal(value, YamlComputeNodeData.class)); - result.add(loadComputeNodeInstance(InstanceMetaDataFactory.create(each, instanceType, computeNodeData.getAttribute(), computeNodeData.getVersion(), computeNodeData.getDatabaseName()))); + result.add(loadComputeNodeInstance( + InstanceMetaDataFactory.create(each, instanceType, new YamlComputeNodeDataSwapper().swapToObject(YamlEngine.unmarshal(value, YamlComputeNodeData.class))))); } return result; } diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ComputeNodeOnlineHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ComputeNodeOnlineHandler.java index 569ef53dcd213..281d145c1d986 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ComputeNodeOnlineHandler.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ComputeNodeOnlineHandler.java @@ -58,8 +58,7 @@ public void handle(final ContextManager contextManager, final DataChangedEvent e return; } ComputeNodeData computeNodeData = new YamlComputeNodeDataSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlComputeNodeData.class)); - InstanceMetaData instanceMetaData = InstanceMetaDataFactory.create( - matcher.group(2), InstanceType.valueOf(matcher.group(1).toUpperCase()), computeNodeData.getAttribute(), computeNodeData.getVersion(), computeNodeData.getDatabaseName()); + InstanceMetaData instanceMetaData = InstanceMetaDataFactory.create(matcher.group(2), InstanceType.valueOf(matcher.group(1).toUpperCase()), computeNodeData); if (Type.ADDED == event.getType()) { contextManager.getComputeNodeInstanceContext().getClusterInstanceRegistry() .add(contextManager.getPersistServiceFacade().getComputeNodePersistService().loadComputeNodeInstance(instanceMetaData));