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()) {