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));
}
}