This is an automated email from the ASF dual-hosted git repository.

sunnianjun 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 8c9a165fa47 Refactor ClusterWorkerIdGenerator (#31318)
8c9a165fa47 is described below

commit 8c9a165fa470665e2c34de8fb4bcff04b751cdc3
Author: Liang Zhang <[email protected]>
AuthorDate: Mon May 20 23:40:07 2024 +0800

    Refactor ClusterWorkerIdGenerator (#31318)
---
 .../manager/cluster/ClusterContextManagerBuilder.java     |  2 +-
 .../workerid/generator/ClusterWorkerIdGenerator.java      | 15 +++++++--------
 .../workerid/generator/ClusterWorkerIdGeneratorTest.java  |  9 ++-------
 3 files changed, 10 insertions(+), 16 deletions(-)

diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
index b4848001fe4..8a27e5ea0a5 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
@@ -90,7 +90,7 @@ public final class ClusterContextManagerBuilder implements 
ContextManagerBuilder
     
     private ComputeNodeInstanceContext buildComputeNodeInstanceContext(final 
ModeConfiguration modeConfig,
                                                                        final 
InstanceMetaData instanceMetaData, final ClusterPersistRepository repository, 
final EventBusContext eventBusContext) {
-        return new ComputeNodeInstanceContext(new 
ComputeNodeInstance(instanceMetaData), new ClusterWorkerIdGenerator(repository, 
instanceMetaData), modeConfig,
+        return new ComputeNodeInstanceContext(new 
ComputeNodeInstance(instanceMetaData), new ClusterWorkerIdGenerator(repository, 
instanceMetaData.getId()), modeConfig,
                 new ClusterModeContextManager(), new GlobalLockContext(new 
GlobalLockPersistService(initDistributedLockHolder(repository))), 
eventBusContext);
     }
     
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGenerator.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGenerator.java
index 1610bec3602..26dbd5d86be 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGenerator.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGenerator.java
@@ -20,10 +20,9 @@ package 
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.work
 import com.google.common.base.Preconditions;
 import lombok.extern.slf4j.Slf4j;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
-import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
+import 
org.apache.shardingsphere.infra.instance.workerid.WorkerIdAssignedException;
 import org.apache.shardingsphere.infra.instance.workerid.WorkerIdGenerator;
 import 
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.status.compute.service.ComputeNodeStatusService;
-import 
org.apache.shardingsphere.infra.instance.workerid.WorkerIdAssignedException;
 import 
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.workerid.node.WorkerIdNode;
 import 
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
 import 
org.apache.shardingsphere.mode.repository.cluster.exception.ClusterPersistRepositoryException;
@@ -43,15 +42,15 @@ public final class ClusterWorkerIdGenerator implements 
WorkerIdGenerator {
     
     private final ClusterPersistRepository repository;
     
-    private final InstanceMetaData instanceMetaData;
+    private final String instanceId;
     
     private final ComputeNodeStatusService computeNodeStatusService;
     
     private final AtomicBoolean isWarned = new AtomicBoolean(false);
     
-    public ClusterWorkerIdGenerator(final ClusterPersistRepository repository, 
final InstanceMetaData instanceMetaData) {
+    public ClusterWorkerIdGenerator(final ClusterPersistRepository repository, 
final String instanceId) {
         this.repository = repository;
-        this.instanceMetaData = instanceMetaData;
+        this.instanceId = instanceId;
         computeNodeStatusService = new ComputeNodeStatusService(repository);
     }
     
@@ -63,7 +62,7 @@ public final class ClusterWorkerIdGenerator implements 
WorkerIdGenerator {
     }
     
     private Optional<Integer> loadExistedWorkerId() {
-        return 
computeNodeStatusService.loadInstanceWorkerId(instanceMetaData.getId());
+        return computeNodeStatusService.loadInstanceWorkerId(instanceId);
     }
     
     private int generateNewWorkerId() {
@@ -72,7 +71,7 @@ public final class ClusterWorkerIdGenerator implements 
WorkerIdGenerator {
             generatedWorkId = generateAvailableWorkerId();
         } while (!generatedWorkId.isPresent());
         int result = generatedWorkId.get();
-        
computeNodeStatusService.persistInstanceWorkerId(instanceMetaData.getId(), 
result);
+        computeNodeStatusService.persistInstanceWorkerId(instanceId, result);
         return result;
     }
     
@@ -90,7 +89,7 @@ public final class ClusterWorkerIdGenerator implements 
WorkerIdGenerator {
         Integer preselectedWorkerId = priorityQueue.poll();
         Preconditions.checkState(null != preselectedWorkerId, "Preselected 
worker-id can not be null.");
         try {
-            
repository.persistExclusiveEphemeral(WorkerIdNode.getWorkerIdGeneratorPath(preselectedWorkerId.toString()),
 instanceMetaData.getId());
+            
repository.persistExclusiveEphemeral(WorkerIdNode.getWorkerIdGeneratorPath(preselectedWorkerId.toString()),
 instanceId);
             return Optional.of(preselectedWorkerId);
         } catch (final ClusterPersistRepositoryException ignore) {
             return Optional.empty();
diff --git 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGeneratorTest.java
 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGeneratorTest.java
index e04ab181068..7b74dd62b0a 100644
--- 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGeneratorTest.java
+++ 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGeneratorTest.java
@@ -17,7 +17,6 @@
 
 package 
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.workerid.generator;
 
-import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
 import org.apache.shardingsphere.infra.instance.workerid.WorkerIdGenerator;
 import 
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
 import org.apache.shardingsphere.test.util.PropertiesBuilder;
@@ -37,19 +36,15 @@ class ClusterWorkerIdGeneratorTest {
     
     @Test
     void assertGenerateWithExistedWorkerId() {
-        InstanceMetaData instanceMetaData = mock(InstanceMetaData.class);
-        when(instanceMetaData.getId()).thenReturn("foo_id");
         ClusterPersistRepository repository = 
mock(ClusterPersistRepository.class);
         
when(repository.getDirectly("/nodes/compute_nodes/worker_id/foo_id")).thenReturn("10");
-        assertThat(new ClusterWorkerIdGenerator(repository, 
instanceMetaData).generate(PropertiesBuilder.build(new 
Property(WorkerIdGenerator.WORKER_ID_KEY, "1"))), is(10));
+        assertThat(new ClusterWorkerIdGenerator(repository, 
"foo_id").generate(PropertiesBuilder.build(new 
Property(WorkerIdGenerator.WORKER_ID_KEY, "1"))), is(10));
     }
     
     @Test
     void assertGenerateWithoutExistedWorkerId() {
-        InstanceMetaData instanceMetaData = mock(InstanceMetaData.class);
-        when(instanceMetaData.getId()).thenReturn("foo_id");
         ClusterPersistRepository repository = 
mock(ClusterPersistRepository.class);
         doAnswer((Answer<Object>) invocation -> 
"foo_id").when(repository).persistEphemeral("/worker_id/0", "foo_id");
-        assertThat(new ClusterWorkerIdGenerator(repository, 
instanceMetaData).generate(new Properties()), is(0));
+        assertThat(new ClusterWorkerIdGenerator(repository, 
"foo_id").generate(new Properties()), is(0));
     }
 }

Reply via email to