This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 12dd7daefcf Fix failed to persist labels at startup (#31615)
12dd7daefcf is described below
commit 12dd7daefcfb3413d44dae1de58d295a514a2553
Author: Haoran Meng <[email protected]>
AuthorDate: Fri Jun 7 11:46:28 2024 +0800
Fix failed to persist labels at startup (#31615)
---
.../shardingsphere/infra/instance/ComputeNodeInstance.java | 6 ++++++
.../mode/manager/cluster/ClusterContextManagerBuilder.java | 11 ++++-------
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstance.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstance.java
index 9725f0ec8ce..3e45751644f 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstance.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/instance/ComputeNodeInstance.java
@@ -26,6 +26,7 @@ import
org.apache.shardingsphere.infra.state.instance.InstanceStateContext;
import javax.annotation.concurrent.ThreadSafe;
import java.util.Collection;
+import java.util.Optional;
import java.util.concurrent.CopyOnWriteArrayList;
/**
@@ -45,6 +46,11 @@ public final class ComputeNodeInstance {
@Setter
private volatile int workerId = -1;
+ public ComputeNodeInstance(final InstanceMetaData metaData, final
Collection<String> labels) {
+ this.metaData = metaData;
+ Optional.ofNullable(labels).ifPresent(this.labels::addAll);
+ }
+
/**
* Switch state.
*
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 7d7de23b622..dc790d7f747 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
@@ -58,7 +58,7 @@ public final class ClusterContextManagerBuilder implements
ContextManagerBuilder
ModeConfiguration modeConfig = param.getModeConfiguration();
ClusterPersistRepositoryConfiguration config =
(ClusterPersistRepositoryConfiguration) modeConfig.getRepository();
ClusterPersistRepository repository =
getClusterPersistRepository(config);
- ComputeNodeInstanceContext computeNodeInstanceContext =
buildComputeNodeInstanceContext(modeConfig, param.getInstanceMetaData(),
repository, eventBusContext);
+ ComputeNodeInstanceContext computeNodeInstanceContext =
buildComputeNodeInstanceContext(modeConfig, param.getInstanceMetaData(),
repository, eventBusContext, param.getLabels());
repository.init(config, computeNodeInstanceContext);
MetaDataPersistService metaDataPersistService = new
MetaDataPersistService(repository);
MetaDataContexts metaDataContexts =
MetaDataContextsFactory.create(metaDataPersistService, param,
computeNodeInstanceContext,
@@ -74,9 +74,9 @@ public final class ClusterContextManagerBuilder implements
ContextManagerBuilder
return TypedSPILoader.getService(ClusterPersistRepository.class,
config.getType(), config.getProps());
}
- private ComputeNodeInstanceContext buildComputeNodeInstanceContext(final
ModeConfiguration modeConfig,
- final
InstanceMetaData instanceMetaData, final ClusterPersistRepository repository,
final EventBusContext eventBusContext) {
- return new ComputeNodeInstanceContext(new
ComputeNodeInstance(instanceMetaData),
+ private ComputeNodeInstanceContext buildComputeNodeInstanceContext(final
ModeConfiguration modeConfig, final InstanceMetaData instanceMetaData,
+ final
ClusterPersistRepository repository, final EventBusContext eventBusContext,
final Collection<String> labels) {
+ return new ComputeNodeInstanceContext(new
ComputeNodeInstance(instanceMetaData, labels),
new ClusterWorkerIdGenerator(repository,
instanceMetaData.getId()), modeConfig,
new GlobalLockContext(new
GlobalLockPersistService(repository)), eventBusContext);
}
@@ -91,9 +91,6 @@ public final class ClusterContextManagerBuilder implements
ContextManagerBuilder
contextManager.getPersistServiceFacade().getComputeNodePersistService().registerOnline(computeNodeInstanceContext.getInstance());
new GovernanceWatcherFactory(repository,
eventBusContext).watchListeners();
watchDatabaseMetaDataListener(param,
contextManager.getPersistServiceFacade().getMetaDataPersistService(),
eventBusContext);
- if (null != param.getLabels()) {
-
contextManager.getComputeNodeInstanceContext().getInstance().getLabels().addAll(param.getLabels());
- }
contextManager.getComputeNodeInstanceContext().getAllClusterInstances().addAll(contextManager.getPersistServiceFacade().getComputeNodePersistService().loadAllComputeNodeInstances());
new ClusterEventSubscriberRegistry(contextManager,
repository).register();
}