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 2025/03/07 22:06:43 UTC

(shardingsphere) branch master updated: Refactor DatabaseListenerChangedHandler (#34929)

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 <zh...@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()) {