You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2024/06/07 03:46:34 UTC
(shardingsphere) branch master updated: Fix failed to persist labels at startup (#31615)
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 <me...@gmail.com>
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();
}