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 e0ff62e2d67 Refactor QualifiedDataSourceChangedHandler (#34241)
e0ff62e2d67 is described below

commit e0ff62e2d6746bf160737bba4c529bbf7babb7fb
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jan 4 12:02:51 2025 +0800

    Refactor QualifiedDataSourceChangedHandler (#34241)
---
 .../handler/global/QualifiedDataSourceChangedHandler.java  | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/QualifiedDataSourceChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/QualifiedDataSourceChangedHandler.java
index 6c8ad363e40..f2bb401f99b 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/QualifiedDataSourceChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/QualifiedDataSourceChangedHandler.java
@@ -34,6 +34,7 @@ import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.DataChang
 
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Optional;
 
 /**
  * Qualified data source changed handler.
@@ -52,13 +53,18 @@ public final class QualifiedDataSourceChangedHandler 
implements DataChangedEvent
     
     @Override
     public void handle(final ContextManager contextManager, final 
DataChangedEvent event) {
-        if (!Strings.isNullOrEmpty(event.getValue())) {
-            QualifiedDataSourceState state = new 
YamlQualifiedDataSourceStateSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(),
 YamlQualifiedDataSourceState.class));
-            
QualifiedDataSourceNode.extractQualifiedDataSource(event.getKey()).ifPresent(optional
 -> handle(contextManager.getMetaDataContexts().getMetaData(), optional, 
state));
+        if (Strings.isNullOrEmpty(event.getValue())) {
+            return;
         }
+        Optional<QualifiedDataSource> qualifiedDataSource = 
QualifiedDataSourceNode.extractQualifiedDataSource(event.getKey());
+        if (!qualifiedDataSource.isPresent()) {
+            return;
+        }
+        QualifiedDataSourceState state = new 
YamlQualifiedDataSourceStateSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(),
 YamlQualifiedDataSourceState.class));
+        
handleQualifiedDataSourceStateChanged(contextManager.getMetaDataContexts().getMetaData(),
 qualifiedDataSource.get(), state);
     }
     
-    private void handle(final ShardingSphereMetaData metaData, final 
QualifiedDataSource qualifiedDataSource, final QualifiedDataSourceState state) {
+    private void handleQualifiedDataSourceStateChanged(final 
ShardingSphereMetaData metaData, final QualifiedDataSource qualifiedDataSource, 
final QualifiedDataSourceState state) {
         
Preconditions.checkState(metaData.containsDatabase(qualifiedDataSource.getDatabaseName()),
 "No database '%s' exists.", qualifiedDataSource.getDatabaseName());
         
metaData.getDatabase(qualifiedDataSource.getDatabaseName()).getRuleMetaData().getAttributes(StaticDataSourceRuleAttribute.class)
                 .forEach(each -> each.updateStatus(qualifiedDataSource, 
state.getState()));

Reply via email to