This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 180bfbf7c62 Refactor DatabaseListenerChangedHandler (#34929)
180bfbf7c62 is described below

commit 180bfbf7c62186a73ff37989a93d76fa9a92f3db
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Sat Mar 8 06:06:37 2025 +0800

    Refactor DatabaseListenerChangedHandler (#34929)
---
 .../global/state/DatabaseListenerChangedHandler.java   | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/state/DatabaseListenerChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/state/DatabaseListenerChangedHandler.java
index 1ae4dea9ba4..bdf2566bfad 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/state/DatabaseListenerChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/state/DatabaseListenerChangedHandler.java
@@ -59,12 +59,18 @@ public final class DatabaseListenerChangedHandler 
implements GlobalDataChangedEv
     
     private void handle(final ContextManager contextManager, final String 
databaseName, final ClusterDatabaseListenerCoordinatorType type) {
         ClusterPersistRepository repository = (ClusterPersistRepository) 
contextManager.getPersistServiceFacade().getRepository();
-        if (ClusterDatabaseListenerCoordinatorType.CREATE == type) {
-            repository.watch(NodePathGenerator.toPath(new 
TableMetadataNodePath(databaseName, null, null), true), new 
DatabaseMetaDataChangedListener(contextManager));
-            
contextManager.getMetaDataContextManager().getDatabaseMetaDataManager().addDatabase(databaseName);
-        } else if (ClusterDatabaseListenerCoordinatorType.DROP == type) {
-            repository.removeDataListener(NodePathGenerator.toPath(new 
TableMetadataNodePath(databaseName, null, null), true));
-            
contextManager.getMetaDataContextManager().getDatabaseMetaDataManager().dropDatabase(databaseName);
+        String databasePath = NodePathGenerator.toPath(new 
TableMetadataNodePath(databaseName, null, null), true);
+        switch (type) {
+            case CREATE:
+                repository.watch(databasePath, new 
DatabaseMetaDataChangedListener(contextManager));
+                
contextManager.getMetaDataContextManager().getDatabaseMetaDataManager().addDatabase(databaseName);
+                break;
+            case DROP:
+                repository.removeDataListener(databasePath);
+                
contextManager.getMetaDataContextManager().getDatabaseMetaDataManager().dropDatabase(databaseName);
+                break;
+            default:
+                break;
         }
         new 
ClusterDatabaseListenerPersistCoordinator(repository).delete(databaseName);
         if (InstanceType.PROXY == 
contextManager.getComputeNodeInstanceContext().getInstance().getMetaData().getType())
 {

Reply via email to