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

duanzhengqiang 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 3b36b039c08 Avoid send mistake storge unit event (#31766)
3b36b039c08 is described below

commit 3b36b039c08fcdcb0350ab81d9094248046f672e
Author: zhaojinchao <[email protected]>
AuthorDate: Thu Jun 20 11:58:25 2024 +0800

    Avoid send mistake storge unit event (#31766)
    
    * Avoid send mistake storge unit event
    
    * Refactor code style
---
 .../cluster/coordinator/listener/MetaDataChangedListener.java  | 10 ++++++++--
 .../coordinator/subscriber/ConfigurationChangedSubscriber.java |  6 +++---
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/listener/MetaDataChangedListener.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/listener/MetaDataChangedListener.java
index 6cbc251e5ac..22640dec9fb 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/listener/MetaDataChangedListener.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/listener/MetaDataChangedListener.java
@@ -149,7 +149,10 @@ public final class MetaDataChangedListener implements 
DataChangedEventListener {
             }
         }
         dataSourceUnitName = 
DataSourceMetaDataNode.getDataSourceNameByDataSourceUnitNode(event.getKey());
-        return dataSourceUnitName.map(optional -> new 
UnregisterStorageUnitEvent(databaseName, optional));
+        if (Type.DELETED == event.getType() && dataSourceUnitName.isPresent()) 
{
+            return Optional.of(new UnregisterStorageUnitEvent(databaseName, 
dataSourceUnitName.get()));
+        }
+        return Optional.empty();
     }
     
     private Optional<GovernanceEvent> createStorageNodeChangedEvent(final 
String databaseName, final DataChangedEvent event) {
@@ -163,6 +166,9 @@ public final class MetaDataChangedListener implements 
DataChangedEventListener {
             }
         }
         dataSourceNodeName = 
DataSourceMetaDataNode.getDataSourceNameByDataSourceNodeNode(event.getKey());
-        return dataSourceNodeName.map(optional -> new 
UnregisterStorageNodeEvent(databaseName, optional));
+        if (Type.DELETED == event.getType() && dataSourceNodeName.isPresent()) 
{
+            return Optional.of(new UnregisterStorageNodeEvent(databaseName, 
dataSourceNodeName.get()));
+        }
+        return Optional.empty();
     }
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriber.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriber.java
index e44a512b38d..78348cdfd13 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriber.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ConfigurationChangedSubscriber.java
@@ -42,7 +42,7 @@ public final class ConfigurationChangedSubscriber implements 
EventSubscriber {
      * @param event register storage unit event
      */
     @Subscribe
-    public void renew(final RegisterStorageUnitEvent event) {
+    public synchronized void renew(final RegisterStorageUnitEvent event) {
         if 
(!event.getActiveVersion().equals(contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService()
                 .getActiveVersionByFullPath(event.getActiveVersionKey()))) {
             return;
@@ -57,7 +57,7 @@ public final class ConfigurationChangedSubscriber implements 
EventSubscriber {
      * @param event register storage unit event
      */
     @Subscribe
-    public void renew(final AlterStorageUnitEvent event) {
+    public synchronized void renew(final AlterStorageUnitEvent event) {
         if 
(!event.getActiveVersion().equals(contextManager.getPersistServiceFacade().getMetaDataPersistService().getMetaDataVersionPersistService()
                 .getActiveVersionByFullPath(event.getActiveVersionKey()))) {
             return;
@@ -72,7 +72,7 @@ public final class ConfigurationChangedSubscriber implements 
EventSubscriber {
      * @param event register storage unit event
      */
     @Subscribe
-    public void renew(final UnregisterStorageUnitEvent event) {
+    public synchronized void renew(final UnregisterStorageUnitEvent event) {
         if 
(!contextManager.getMetaDataContexts().getMetaData().containsDatabase(event.getDatabaseName()))
 {
             return;
         }

Reply via email to