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 29952026c03 Remove ComputeNodeInstanceContextAware interface for
ClusterPersistRepository (#31438)
29952026c03 is described below
commit 29952026c03af86417ad473ea5dd1b5f02ccaf8c
Author: Haoran Meng <[email protected]>
AuthorDate: Wed May 29 18:02:58 2024 +0800
Remove ComputeNodeInstanceContextAware interface for
ClusterPersistRepository (#31438)
---
.../mode/manager/cluster/ClusterContextManagerBuilder.java | 4 ++--
.../coordinator/registry/GovernanceWatcherFactory.java | 8 ++++++--
.../mode/repository/cluster/ClusterPersistRepository.java | 9 +++++++++
.../repository/cluster/zookeeper/ZookeeperRepository.java | 13 ++++++-------
4 files changed, 23 insertions(+), 11 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 f6409ee689d..93bc0a20e19 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
@@ -101,8 +101,8 @@ public final class ClusterContextManagerBuilder implements
ContextManagerBuilder
private void registerOnline(final EventBusContext eventBusContext, final
ComputeNodeInstanceContext computeNodeInstanceContext,
final ClusterPersistRepository repository,
final ContextManagerBuilderParameter param, final ContextManager
contextManager) {
contextManager.getPersistServiceFacade().getComputeNodePersistService().registerOnline(computeNodeInstanceContext.getInstance());
- new GovernanceWatcherFactory(repository,
- eventBusContext, param.getInstanceMetaData() instanceof
JDBCInstanceMetaData ? param.getDatabaseConfigs().keySet() :
Collections.emptyList()).watchListeners();
+ new GovernanceWatcherFactory(repository, eventBusContext,
param.getInstanceMetaData() instanceof JDBCInstanceMetaData ?
param.getDatabaseConfigs().keySet() : Collections.emptyList())
+ .watchListeners(computeNodeInstanceContext);
if (null != param.getLabels()) {
contextManager.getComputeNodeInstanceContext().getInstance().getLabels().addAll(param.getLabels());
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/GovernanceWatcherFactory.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/GovernanceWatcherFactory.java
index e12299b7afd..e37c2c6d34d 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/GovernanceWatcherFactory.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/GovernanceWatcherFactory.java
@@ -18,8 +18,9 @@
package org.apache.shardingsphere.mode.manager.cluster.coordinator.registry;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
+import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
+import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
import
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
import java.util.Collection;
@@ -38,11 +39,14 @@ public final class GovernanceWatcherFactory {
/**
* Watch listeners.
+ *
+ * @param computeNodeInstanceContext compute node instance context
*/
- public void watchListeners() {
+ public void watchListeners(final ComputeNodeInstanceContext
computeNodeInstanceContext) {
for (GovernanceWatcher<?> each :
ShardingSphereServiceLoader.getServiceInstances(GovernanceWatcher.class)) {
watch(each);
}
+ repository.watch(computeNodeInstanceContext);
}
private void watch(final GovernanceWatcher<?> listener) {
diff --git
a/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/ClusterPersistRepository.java
b/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/ClusterPersistRepository.java
index b240ecea27b..0879f6d1b97 100644
---
a/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/ClusterPersistRepository.java
+++
b/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/ClusterPersistRepository.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.mode.repository.cluster;
+import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
import
org.apache.shardingsphere.mode.repository.cluster.listener.DataChangedEventListener;
import
org.apache.shardingsphere.mode.repository.cluster.lock.holder.DistributedLockHolder;
import org.apache.shardingsphere.mode.spi.PersistRepository;
@@ -56,4 +57,12 @@ public interface ClusterPersistRepository extends
PersistRepository {
* @param listener data changed event listener
*/
void watch(String key, DataChangedEventListener listener);
+
+ /**
+ * Watch client status.
+ *
+ * @param computeNodeInstanceContext compute node instance context
+ */
+ default void watch(ComputeNodeInstanceContext computeNodeInstanceContext) {
+ }
}
diff --git
a/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java
b/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java
index 76e20a97f79..84577037a68 100644
---
a/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java
+++
b/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java
@@ -28,7 +28,6 @@ import
org.apache.curator.framework.recipes.cache.CuratorCacheListener;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.curator.utils.CloseableUtils;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
-import
org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContextAware;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
import
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
@@ -59,7 +58,7 @@ import java.util.concurrent.TimeUnit;
/**
* Registry repository of ZooKeeper.
*/
-public final class ZookeeperRepository implements ClusterPersistRepository,
ComputeNodeInstanceContextAware {
+public final class ZookeeperRepository implements ClusterPersistRepository {
private final Map<String, CuratorCache> caches = new ConcurrentHashMap<>();
@@ -255,6 +254,11 @@ public final class ZookeeperRepository implements
ClusterPersistRepository, Comp
cache.start();
}
+ @Override
+ public void watch(final ComputeNodeInstanceContext
computeNodeInstanceContext) {
+ client.getConnectionStateListenable().addListener(new
SessionConnectionReconnectListener(computeNodeInstanceContext, this));
+ }
+
@Override
public void close() {
caches.values().forEach(CuratorCache::close);
@@ -274,11 +278,6 @@ public final class ZookeeperRepository implements
ClusterPersistRepository, Comp
}
}
- @Override
- public void setComputeNodeInstanceContext(final ComputeNodeInstanceContext
computeNodeInstanceContext) {
- client.getConnectionStateListenable().addListener(new
SessionConnectionReconnectListener(computeNodeInstanceContext, this));
- }
-
@Override
public String getType() {
return "ZooKeeper";