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

zhaojinchao 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 c0a2e8db047 Refactor broadcast event & subscriber (#26479)
c0a2e8db047 is described below

commit c0a2e8db047a9725e81051af28f59a01cdf27ef4
Author: ChenJiaHao <[email protected]>
AuthorDate: Sat Jun 24 21:14:01 2023 +0800

    Refactor broadcast event & subscriber (#26479)
---
 .../event/BroadcastRuleConfigurationEventBuilder.java | 14 +++-----------
 .../event/config/AddBroadcastTableEvent.java          |  5 +----
 .../event/config/AlterBroadcastTableEvent.java        |  5 +----
 .../event/config/DeleteBroadcastTableEvent.java       |  2 +-
 .../metadata/converter/BroadcastNodeConverter.java    |  8 +++++---
 .../subscriber/BroadcastConfigurationSubscriber.java  | 19 ++++++++++++++-----
 .../metadata/convert/BroadcastNodeConverterTest.java  |  4 ++--
 ...adwriteSplittingRuleConfigurationEventBuilder.java | 12 ++++++------
 .../AddReadwriteSplittingDataSourceEvent.java}        |  4 ++--
 .../AlterReadwriteSplittingDataSourceEvent.java}      |  4 ++--
 .../DeleteReadwriteSplittingDataSourceEvent.java}     |  4 ++--
 ...va => ReadwriteSplittingDataSourceSubscriber.java} | 14 +++++++-------
 ...e.infra.rule.RuleConfigurationSubscribeCoordinator |  2 +-
 .../persist/node/NewDatabaseMetaDataNode.java         | 10 +++++-----
 14 files changed, 52 insertions(+), 55 deletions(-)

diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
index eeac4f5d710..97c38a666f8 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/BroadcastRuleConfigurationEventBuilder.java
@@ -18,14 +18,11 @@
 package org.apache.shardingsphere.broadcast.event;
 
 import com.google.common.base.Strings;
-import 
org.apache.shardingsphere.broadcast.api.config.BroadcastRuleConfiguration;
 import org.apache.shardingsphere.broadcast.event.config.AddBroadcastTableEvent;
 import 
org.apache.shardingsphere.broadcast.event.config.AlterBroadcastTableEvent;
 import 
org.apache.shardingsphere.broadcast.event.config.DeleteBroadcastTableEvent;
 import 
org.apache.shardingsphere.broadcast.metadata.converter.BroadcastNodeConverter;
-import 
org.apache.shardingsphere.broadcast.yaml.config.YamlBroadcastRuleConfiguration;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
 import org.apache.shardingsphere.mode.spi.RuleConfigurationEventBuilder;
@@ -42,7 +39,7 @@ public final class BroadcastRuleConfigurationEventBuilder 
implements RuleConfigu
         if (!BroadcastNodeConverter.isBroadcastPath(event.getKey()) || 
Strings.isNullOrEmpty(event.getValue())) {
             return Optional.empty();
         }
-        if (BroadcastNodeConverter.isTablesPath(event.getKey()) && 
!Strings.isNullOrEmpty(event.getValue())) {
+        if (BroadcastNodeConverter.isTablesActiveVersionPath(event.getKey()) 
&& !Strings.isNullOrEmpty(event.getValue())) {
             Optional<String> tablesVersion = 
BroadcastNodeConverter.getTablesVersion(event.getKey());
             if (tablesVersion.isPresent()) {
                 return createBroadcastConfigEvent(databaseName, 
tablesVersion.get(), event);
@@ -53,16 +50,11 @@ public final class BroadcastRuleConfigurationEventBuilder 
implements RuleConfigu
     
     private Optional<GovernanceEvent> createBroadcastConfigEvent(final String 
databaseName, final String version, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new AddBroadcastTableEvent(databaseName, 
swapBroadcastTableRuleConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new AddBroadcastTableEvent(databaseName, 
event.getKey(), version));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new AlterBroadcastTableEvent(databaseName, 
swapBroadcastTableRuleConfig(event.getValue()), event.getKey(), version));
+            return Optional.of(new AlterBroadcastTableEvent(databaseName, 
event.getKey(), version));
         }
         return Optional.of(new DeleteBroadcastTableEvent(databaseName, 
event.getKey(), version));
     }
-    
-    private BroadcastRuleConfiguration swapBroadcastTableRuleConfig(final 
String yamlContext) {
-        YamlBroadcastRuleConfiguration yamlBroadcastRuleConfiguration = 
YamlEngine.unmarshal(yamlContext, YamlBroadcastRuleConfiguration.class);
-        return new 
BroadcastRuleConfiguration(yamlBroadcastRuleConfiguration.getTables());
-    }
 }
diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java
index 5a701ead7a5..2dd79d7bb9d 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AddBroadcastTableEvent.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.broadcast.event.config;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.broadcast.api.config.BroadcastRuleConfiguration;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 
 /**
@@ -31,9 +30,7 @@ public final class AddBroadcastTableEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
-    private final BroadcastRuleConfiguration config;
-    
     private final String activeVersionKey;
     
-    private final String version;
+    private final String activeVersion;
 }
diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java
index a16aa8e8975..3dfec080494 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/AlterBroadcastTableEvent.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.broadcast.event.config;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.broadcast.api.config.BroadcastRuleConfiguration;
 import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 
 /**
@@ -31,9 +30,7 @@ public final class AlterBroadcastTableEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
-    private final BroadcastRuleConfiguration config;
-    
     private final String activeVersionKey;
     
-    private final String version;
+    private final String activeVersion;
 }
diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java
index 1e97aca73da..30368d1ff36 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/event/config/DeleteBroadcastTableEvent.java
@@ -32,5 +32,5 @@ public final class DeleteBroadcastTableEvent implements 
GovernanceEvent {
     
     private final String activeVersionKey;
     
-    private final String version;
+    private final String activeVersion;
 }
diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/metadata/converter/BroadcastNodeConverter.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/metadata/converter/BroadcastNodeConverter.java
index faa188ff436..bfe53b51817 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/metadata/converter/BroadcastNodeConverter.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/metadata/converter/BroadcastNodeConverter.java
@@ -38,6 +38,8 @@ public final class BroadcastNodeConverter {
     
     private static final String VERSION_PATH = "/([\\w\\-]+)/versions/(\\d+)";
     
+    private static final String RULE_ACTIVE_VERSION = "/active_version$";
+    
     /**
      * Get tables path.
      *
@@ -60,13 +62,13 @@ public final class BroadcastNodeConverter {
     }
     
     /**
-     * Is broadcast tables path.
+     * Is broadcast tables active version path.
      *
      * @param rulePath rule path
      * @return true or false
      */
-    public static boolean isTablesPath(final String rulePath) {
-        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ TABLES_NODE + VERSION_PATH, Pattern.CASE_INSENSITIVE);
+    public static boolean isTablesActiveVersionPath(final String rulePath) {
+        Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" 
+ TABLES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
         Matcher matcher = pattern.matcher(rulePath);
         return matcher.find();
     }
diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
index caa843450e4..67fc992d6e8 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/subscriber/BroadcastConfigurationSubscriber.java
@@ -24,9 +24,11 @@ import 
org.apache.shardingsphere.broadcast.event.config.AddBroadcastTableEvent;
 import 
org.apache.shardingsphere.broadcast.event.config.AlterBroadcastTableEvent;
 import 
org.apache.shardingsphere.broadcast.event.config.DeleteBroadcastTableEvent;
 import org.apache.shardingsphere.broadcast.rule.BroadcastRule;
+import 
org.apache.shardingsphere.broadcast.yaml.config.YamlBroadcastRuleConfiguration;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator;
+import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import 
org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
 
 import java.util.Map;
@@ -57,11 +59,12 @@ public final class BroadcastConfigurationSubscriber 
implements RuleConfiguration
      */
     @Subscribe
     public synchronized void renew(final AddBroadcastTableEvent event) {
-        if 
(!event.getVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        BroadcastRuleConfiguration needToAddedConfig = event.getConfig();
+        BroadcastRuleConfiguration needToAddedConfig = 
swapBroadcastTableRuleConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         Optional<BroadcastRule> rule = 
database.getRuleMetaData().findSingleRule(BroadcastRule.class);
         BroadcastRuleConfiguration config;
         if (rule.isPresent()) {
@@ -81,11 +84,12 @@ public final class BroadcastConfigurationSubscriber 
implements RuleConfiguration
      */
     @Subscribe
     public synchronized void renew(final AlterBroadcastTableEvent event) {
-        if 
(!event.getVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
-        BroadcastRuleConfiguration needToAlteredConfig = event.getConfig();
+        BroadcastRuleConfiguration needToAlteredConfig = 
swapBroadcastTableRuleConfig(
+                
instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(),
 event.getActiveVersion()));
         BroadcastRuleConfiguration config = 
database.getRuleMetaData().getSingleRule(BroadcastRule.class).getConfiguration();
         config.getTables().clear();
         config.getTables().addAll(needToAlteredConfig.getTables());
@@ -99,7 +103,7 @@ public final class BroadcastConfigurationSubscriber 
implements RuleConfiguration
      */
     @Subscribe
     public synchronized void renew(final DeleteBroadcastTableEvent event) {
-        if 
(!event.getVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
+        if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
@@ -107,4 +111,9 @@ public final class BroadcastConfigurationSubscriber 
implements RuleConfiguration
         config.getTables().clear();
         instanceContext.getEventBusContext().post(new 
DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
+    
+    private BroadcastRuleConfiguration swapBroadcastTableRuleConfig(final 
String yamlContext) {
+        YamlBroadcastRuleConfiguration yamlBroadcastRuleConfiguration = 
YamlEngine.unmarshal(yamlContext, YamlBroadcastRuleConfiguration.class);
+        return new 
BroadcastRuleConfiguration(yamlBroadcastRuleConfiguration.getTables());
+    }
 }
diff --git 
a/features/broadcast/core/src/main/test/org/apache/shardingsphere/broadcast/metadata/convert/BroadcastNodeConverterTest.java
 
b/features/broadcast/core/src/main/test/org/apache/shardingsphere/broadcast/metadata/convert/BroadcastNodeConverterTest.java
index 75ddee86d77..5087e3fcc9b 100644
--- 
a/features/broadcast/core/src/main/test/org/apache/shardingsphere/broadcast/metadata/convert/BroadcastNodeConverterTest.java
+++ 
b/features/broadcast/core/src/main/test/org/apache/shardingsphere/broadcast/metadata/convert/BroadcastNodeConverterTest.java
@@ -36,7 +36,7 @@ class BroadcastNodeConverterTest {
     void assertCheckIsTargetRuleByRulePath() {
         
assertTrue(BroadcastNodeConverter.isBroadcastPath("/metadata/foo_db/rules/broadcast/tables"));
         
assertFalse(BroadcastNodeConverter.isBroadcastPath("/metadata/foo_db/rules/foo/tables/foo_table"));
-        
assertTrue(BroadcastNodeConverter.isTablesPath("/metadata/foo_db/rules/broadcast/tables/versions/0"));
-        
assertFalse(BroadcastNodeConverter.isTablesPath("/metadata/foo_db/rules/broadcast/tables/MD5"));
+        
assertTrue(BroadcastNodeConverter.isTablesActiveVersionPath("/metadata/foo_db/rules/broadcast/tables/active_version"));
+        
assertFalse(BroadcastNodeConverter.isTablesActiveVersionPath("/metadata/foo_db/rules/broadcast/tables/versions/0"));
     }
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
index acf75c969e7..14b270f1277 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/ReadwriteSplittingRuleConfigurationEventBuilder.java
@@ -22,9 +22,9 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
 import org.apache.shardingsphere.mode.spi.RuleConfigurationEventBuilder;
-import 
org.apache.shardingsphere.readwritesplitting.event.config.AddReadwriteSplittingConfigurationEvent;
-import 
org.apache.shardingsphere.readwritesplitting.event.config.AlterReadwriteSplittingConfigurationEvent;
-import 
org.apache.shardingsphere.readwritesplitting.event.config.DeleteReadwriteSplittingConfigurationEvent;
+import 
org.apache.shardingsphere.readwritesplitting.event.datasource.AddReadwriteSplittingDataSourceEvent;
+import 
org.apache.shardingsphere.readwritesplitting.event.datasource.AlterReadwriteSplittingDataSourceEvent;
+import 
org.apache.shardingsphere.readwritesplitting.event.datasource.DeleteReadwriteSplittingDataSourceEvent;
 import 
org.apache.shardingsphere.readwritesplitting.event.loadbalance.AlterLoadBalanceEvent;
 import 
org.apache.shardingsphere.readwritesplitting.event.loadbalance.DeleteLoadBalanceEvent;
 import 
org.apache.shardingsphere.readwritesplitting.metadata.converter.ReadwriteSplittingNodeConverter;
@@ -54,12 +54,12 @@ public final class 
ReadwriteSplittingRuleConfigurationEventBuilder implements Ru
     
     private Optional<GovernanceEvent> 
createReadwriteSplittingConfigEvent(final String databaseName, final String 
groupName, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new 
AddReadwriteSplittingConfigurationEvent(databaseName, groupName, 
event.getKey(), event.getValue()));
+            return Optional.of(new 
AddReadwriteSplittingDataSourceEvent(databaseName, groupName, event.getKey(), 
event.getValue()));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new 
AlterReadwriteSplittingConfigurationEvent(databaseName, groupName, 
event.getKey(), event.getValue()));
+            return Optional.of(new 
AlterReadwriteSplittingDataSourceEvent(databaseName, groupName, event.getKey(), 
event.getValue()));
         }
-        return Optional.of(new 
DeleteReadwriteSplittingConfigurationEvent(databaseName, groupName));
+        return Optional.of(new 
DeleteReadwriteSplittingDataSourceEvent(databaseName, groupName));
     }
     
     private Optional<GovernanceEvent> createLoadBalanceEvent(final String 
databaseName, final String loadBalancerName, final DataChangedEvent event) {
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AddReadwriteSplittingConfigurationEvent.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/AddReadwriteSplittingDataSourceEvent.java
similarity index 88%
rename from 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AddReadwriteSplittingConfigurationEvent.java
rename to 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/AddReadwriteSplittingDataSourceEvent.java
index bd17e75f93e..3588005a6d6 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AddReadwriteSplittingConfigurationEvent.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/AddReadwriteSplittingDataSourceEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.readwritesplitting.event.config;
+package org.apache.shardingsphere.readwritesplitting.event.datasource;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
  */
 @RequiredArgsConstructor
 @Getter
-public final class AddReadwriteSplittingConfigurationEvent implements 
GovernanceEvent {
+public final class AddReadwriteSplittingDataSourceEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AlterReadwriteSplittingConfigurationEvent.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/AlterReadwriteSplittingDataSourceEvent.java
similarity index 88%
rename from 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AlterReadwriteSplittingConfigurationEvent.java
rename to 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/AlterReadwriteSplittingDataSourceEvent.java
index 094d7209cc2..5b07f5a9380 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/AlterReadwriteSplittingConfigurationEvent.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/AlterReadwriteSplittingDataSourceEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.readwritesplitting.event.config;
+package org.apache.shardingsphere.readwritesplitting.event.datasource;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
  */
 @RequiredArgsConstructor
 @Getter
-public final class AlterReadwriteSplittingConfigurationEvent implements 
GovernanceEvent {
+public final class AlterReadwriteSplittingDataSourceEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/DeleteReadwriteSplittingConfigurationEvent.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/DeleteReadwriteSplittingDataSourceEvent.java
similarity index 87%
rename from 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/DeleteReadwriteSplittingConfigurationEvent.java
rename to 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/DeleteReadwriteSplittingDataSourceEvent.java
index 02ef1fe1e19..8a248970304 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/config/DeleteReadwriteSplittingConfigurationEvent.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/datasource/DeleteReadwriteSplittingDataSourceEvent.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.readwritesplitting.event.config;
+package org.apache.shardingsphere.readwritesplitting.event.datasource;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
  */
 @RequiredArgsConstructor
 @Getter
-public final class DeleteReadwriteSplittingConfigurationEvent implements 
GovernanceEvent {
+public final class DeleteReadwriteSplittingDataSourceEvent implements 
GovernanceEvent {
     
     private final String databaseName;
     
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingConfigurationSubscriber.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingDataSourceSubscriber.java
similarity index 92%
rename from 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingConfigurationSubscriber.java
rename to 
features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingDataSourceSubscriber.java
index d00c6941cf3..ca36fee008e 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingConfigurationSubscriber.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingDataSourceSubscriber.java
@@ -28,9 +28,9 @@ import 
org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChan
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
-import 
org.apache.shardingsphere.readwritesplitting.event.config.AddReadwriteSplittingConfigurationEvent;
-import 
org.apache.shardingsphere.readwritesplitting.event.config.AlterReadwriteSplittingConfigurationEvent;
-import 
org.apache.shardingsphere.readwritesplitting.event.config.DeleteReadwriteSplittingConfigurationEvent;
+import 
org.apache.shardingsphere.readwritesplitting.event.datasource.AddReadwriteSplittingDataSourceEvent;
+import 
org.apache.shardingsphere.readwritesplitting.event.datasource.AlterReadwriteSplittingDataSourceEvent;
+import 
org.apache.shardingsphere.readwritesplitting.event.datasource.DeleteReadwriteSplittingDataSourceEvent;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 import 
org.apache.shardingsphere.readwritesplitting.yaml.config.rule.YamlReadwriteSplittingDataSourceRuleConfiguration;
 
@@ -43,7 +43,7 @@ import java.util.Optional;
  */
 @SuppressWarnings("UnstableApiUsage")
 @RequiredArgsConstructor
-public final class ReadwriteSplittingConfigurationSubscriber implements 
RuleConfigurationSubscribeCoordinator {
+public final class ReadwriteSplittingDataSourceSubscriber implements 
RuleConfigurationSubscribeCoordinator {
     
     private Map<String, ShardingSphereDatabase> databases;
     
@@ -62,7 +62,7 @@ public final class ReadwriteSplittingConfigurationSubscriber 
implements RuleConf
      * @param event add readwrite-splitting configuration event
      */
     @Subscribe
-    public synchronized void renew(final 
AddReadwriteSplittingConfigurationEvent event) {
+    public synchronized void renew(final AddReadwriteSplittingDataSourceEvent 
event) {
         if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
@@ -87,7 +87,7 @@ public final class ReadwriteSplittingConfigurationSubscriber 
implements RuleConf
      * @param event alter readwrite-splitting configuration event
      */
     @Subscribe
-    public synchronized void renew(final 
AlterReadwriteSplittingConfigurationEvent event) {
+    public synchronized void renew(final 
AlterReadwriteSplittingDataSourceEvent event) {
         if 
(!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey())))
 {
             return;
         }
@@ -106,7 +106,7 @@ public final class 
ReadwriteSplittingConfigurationSubscriber implements RuleConf
      * @param event delete readwrite-splitting configuration event
      */
     @Subscribe
-    public synchronized void renew(final 
DeleteReadwriteSplittingConfigurationEvent event) {
+    public synchronized void renew(final 
DeleteReadwriteSplittingDataSourceEvent event) {
         ShardingSphereDatabase database = 
databases.get(event.getDatabaseName());
         ReadwriteSplittingRuleConfiguration config = 
(ReadwriteSplittingRuleConfiguration) 
database.getRuleMetaData().getSingleRule(ReadwriteSplittingRule.class).getConfiguration();
         config.getDataSources().removeIf(each -> 
each.getName().equals(event.getGroupName()));
diff --git 
a/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator
 
b/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator
index 9e8adc24813..bd22a8bd3eb 100644
--- 
a/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator
+++ 
b/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator
@@ -15,5 +15,5 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.readwritesplitting.subscriber.ReadwriteSplittingConfigurationSubscriber
+org.apache.shardingsphere.readwritesplitting.subscriber.ReadwriteSplittingDataSourceSubscriber
 
org.apache.shardingsphere.readwritesplitting.subscriber.ReadwriteSplittingLoadBalanceSubscriber
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java
index 167f4033dab..61f9a456d83 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/node/NewDatabaseMetaDataNode.java
@@ -48,7 +48,7 @@ public final class NewDatabaseMetaDataNode {
     private static final String VERSIONS = "versions";
     
     /**
-     * Get data Sources node.
+     * Get data sources node.
      *
      * @param databaseName database name
      * @return data sources node
@@ -58,7 +58,7 @@ public final class NewDatabaseMetaDataNode {
     }
     
     /**
-     * Get data Source node.
+     * Get data source node.
      *
      * @param databaseName database name
      * @param dataSourceName data source name
@@ -69,7 +69,7 @@ public final class NewDatabaseMetaDataNode {
     }
     
     /**
-     * Get data Source node with version.
+     * Get data source node with version.
      *
      * @param databaseName database name
      * @param dataSourceName data source name
@@ -81,7 +81,7 @@ public final class NewDatabaseMetaDataNode {
     }
     
     /**
-     * Get data Source active version node.
+     * Get data source active version node.
      *
      * @param databaseName database name
      * @param dataSourceName data source name
@@ -403,7 +403,7 @@ public final class NewDatabaseMetaDataNode {
      * @return active version node
      */
     public static String getVersionNodeByActiveVersionPath(final String 
rulePath, final String activeVersion) {
-        return rulePath.substring(0, rulePath.indexOf(ACTIVE_VERSION)) + 
VERSIONS + "/" + activeVersion;
+        return rulePath.replace(ACTIVE_VERSION, VERSIONS) + "/" + 
activeVersion;
     }
     
     private static String getMetaDataNodeNode() {

Reply via email to