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";

Reply via email to