This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 192492ec2c5 Refactor InstanceMetaDataFactory (#34303)
192492ec2c5 is described below
commit 192492ec2c54beea3e5665de31985a9b4fc4ddf1
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jan 10 23:57:16 2025 +0800
Refactor InstanceMetaDataFactory (#34303)
* Refactor ComputeNodeData
* Refactor InstanceMetaDataFactory
---
.../apache/shardingsphere/infra/instance/ComputeNodeData.java | 4 ++--
.../infra/instance/metadata/InstanceMetaDataFactory.java | 11 ++++++-----
.../infra/instance/yaml/YamlComputeNodeData.java | 4 ++--
.../infra/instance/yaml/YamlComputeNodeDataSwapper.java | 4 ++--
.../infra/instance/metadata/InstanceMetaDataFactoryTest.java | 5 +++--
.../persist/service/unified/ComputeNodePersistService.java | 11 ++++++-----
.../dispatch/handler/global/ComputeNodeOnlineHandler.java | 3 +--
7 files changed, 22 insertions(+), 20 deletions(-)
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeData.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeData.java
index 0f3d8c779a9..eb0f4d46a53 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeData.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeData.java
@@ -27,9 +27,9 @@ import lombok.RequiredArgsConstructor;
@Getter
public final class ComputeNodeData {
+ private final String databaseName;
+
private final String attribute;
private final String version;
-
- private final String databaseName;
}
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 4fe6a173fba..4eee8cc2d60 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 @@ package org.apache.shardingsphere.infra.instance.metadata;
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/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeData.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeData.java
index efc857e4918..5c09a9e6de2 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeData.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeData.java
@@ -28,9 +28,9 @@ import
org.apache.shardingsphere.infra.util.yaml.YamlConfiguration;
@Setter
public final class YamlComputeNodeData implements YamlConfiguration {
+ private String databaseName;
+
private String attribute;
private String version;
-
- private String databaseName;
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeDataSwapper.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeDataSwapper.java
index e451277a1c5..c0d2349c4b8 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeDataSwapper.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/yaml/YamlComputeNodeDataSwapper.java
@@ -28,14 +28,14 @@ public final class YamlComputeNodeDataSwapper implements
YamlConfigurationSwappe
@Override
public YamlComputeNodeData swapToYamlConfiguration(final ComputeNodeData
data) {
YamlComputeNodeData result = new YamlComputeNodeData();
+ result.setDatabaseName(data.getDatabaseName());
result.setAttribute(data.getAttribute());
result.setVersion(data.getVersion());
- result.setDatabaseName(data.getDatabaseName());
return result;
}
@Override
public ComputeNodeData swapToObject(final YamlComputeNodeData yamlConfig) {
- return new ComputeNodeData(yamlConfig.getAttribute(),
yamlConfig.getVersion(), yamlConfig.getDatabaseName());
+ return new ComputeNodeData(yamlConfig.getDatabaseName(),
yamlConfig.getAttribute(), yamlConfig.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 de5e15a5b6d..bfb2fc7fa7f 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 @@ class InstanceMetaDataFactoryTest {
@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 5c2b20548e3..bdc19463920 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
@@ -55,9 +55,10 @@ public final class ComputeNodePersistService {
*/
public void registerOnline(final ComputeNodeInstance computeNodeInstance) {
String instanceId = computeNodeInstance.getMetaData().getId();
- repository.persistEphemeral(ComputeNodePath.getOnlinePath(instanceId,
computeNodeInstance.getMetaData().getType()), YamlEngine.marshal(
- new YamlComputeNodeDataSwapper().swapToYamlConfiguration(new
ComputeNodeData(computeNodeInstance.getMetaData().getAttributes(),
- computeNodeInstance.getMetaData().getVersion(),
computeNodeInstance.getMetaData().getDatabaseName()))));
+ ComputeNodeData computeNodeData = new ComputeNodeData(
+ computeNodeInstance.getMetaData().getDatabaseName(),
computeNodeInstance.getMetaData().getAttributes(),
computeNodeInstance.getMetaData().getVersion());
+ repository.persistEphemeral(ComputeNodePath.getOnlinePath(instanceId,
computeNodeInstance.getMetaData().getType()),
+ YamlEngine.marshal(new
YamlComputeNodeDataSwapper().swapToYamlConfiguration(computeNodeData)));
repository.persistEphemeral(ComputeNodePath.getStatePath(instanceId),
computeNodeInstance.getState().getCurrentState().name());
persistInstanceLabels(instanceId, computeNodeInstance.getLabels());
}
@@ -136,8 +137,8 @@ public final class ComputeNodePersistService {
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 569ef53dcd2..281d145c1d9 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 final class ComputeNodeOnlineHandler implements
DataChangedEventHandler {
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));