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

jianglongtao pushed a commit to branch fix-33341
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git

commit 45aa448b7733023f41d9def054316ee15d660aab
Author: RaigorJiang <[email protected]>
AuthorDate: Wed Jul 10 11:37:23 2024 +0800

    Pick #31766, Avoid send mistake storge unit event
---
 .../registry/metadata/watcher/MetaDataChangedWatcher.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/registry/metadata/watcher/MetaDataChangedWatcher.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/MetaDataChangedWatcher.java
index 94b1728ab9b..0901b698fc2 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/MetaDataChangedWatcher.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/watcher/MetaDataChangedWatcher.java
@@ -164,7 +164,10 @@ public final class MetaDataChangedWatcher implements 
GovernanceWatcher<Governanc
             }
         }
         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) {
@@ -178,6 +181,9 @@ public final class MetaDataChangedWatcher implements 
GovernanceWatcher<Governanc
             }
         }
         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 562e469ab91..763d821fc5c 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
@@ -46,7 +46,7 @@ public final class ConfigurationChangedSubscriber {
      * @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.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
 {
             return;
         }
@@ -60,7 +60,7 @@ public final class ConfigurationChangedSubscriber {
      * @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.getMetaDataContexts().getPersistService().getMetaDataVersionPersistService().getActiveVersionByFullPath(event.getActiveVersionKey())))
 {
             return;
         }
@@ -74,7 +74,7 @@ public final class ConfigurationChangedSubscriber {
      * @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