You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2023/06/25 07:54:16 UTC

[shardingsphere] branch master updated: Refactor features event & subscriber (#26528)

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 811c6f170ce Refactor features event & subscriber (#26528)
811c6f170ce is described below

commit 811c6f170cef9026cc1dfb66854e0283d4a5229c
Author: ChenJiaHao <Pa...@163.com>
AuthorDate: Sun Jun 25 15:54:10 2023 +0800

    Refactor features event & subscriber (#26528)
---
 .../BroadcastRuleConfigurationEventBuilder.java    | 13 +++++-------
 .../event/config/DeleteBroadcastTableEvent.java    |  4 ----
 .../BroadcastConfigurationSubscriber.java          |  3 ---
 .../event/ShadowRuleConfigurationEventBuilder.java |  4 ++--
 .../ShardingRuleConfigurationEventBuilder.java     | 24 +++++++++++-----------
 .../metadata/converter/ShardingNodeConverter.java  | 12 +++++------
 .../converter/ShardingNodeConverterTest.java       |  6 +++---
 7 files changed, 28 insertions(+), 38 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 97c38a666f8..eff7d33d6ee 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
@@ -40,21 +40,18 @@ public final class BroadcastRuleConfigurationEventBuilder implements RuleConfigu
             return Optional.empty();
         }
         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);
-            }
+            return createBroadcastConfigEvent(databaseName, event);
         }
         return Optional.empty();
     }
     
-    private Optional<GovernanceEvent> createBroadcastConfigEvent(final String databaseName, final String version, final DataChangedEvent event) {
+    private Optional<GovernanceEvent> createBroadcastConfigEvent(final String databaseName, final DataChangedEvent event) {
         if (Type.ADDED == event.getType()) {
-            return Optional.of(new AddBroadcastTableEvent(databaseName, event.getKey(), version));
+            return Optional.of(new AddBroadcastTableEvent(databaseName, event.getKey(), event.getValue()));
         }
         if (Type.UPDATED == event.getType()) {
-            return Optional.of(new AlterBroadcastTableEvent(databaseName, event.getKey(), version));
+            return Optional.of(new AlterBroadcastTableEvent(databaseName, event.getKey(), event.getValue()));
         }
-        return Optional.of(new DeleteBroadcastTableEvent(databaseName, event.getKey(), version));
+        return Optional.of(new DeleteBroadcastTableEvent(databaseName));
     }
 }
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 30368d1ff36..bd624005d20 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
@@ -29,8 +29,4 @@ import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
 public final class DeleteBroadcastTableEvent implements GovernanceEvent {
     
     private final String databaseName;
-    
-    private final String activeVersionKey;
-    
-    private final String activeVersion;
 }
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 67fc992d6e8..438a257081c 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
@@ -103,9 +103,6 @@ public final class BroadcastConfigurationSubscriber implements RuleConfiguration
      */
     @Subscribe
     public synchronized void renew(final DeleteBroadcastTableEvent event) {
-        if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
-            return;
-        }
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
         BroadcastRuleConfiguration config = database.getRuleMetaData().getSingleRule(BroadcastRule.class).getConfiguration();
         config.getTables().clear();
diff --git a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
index 03ccd1d7d80..c243be18c75 100644
--- a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
+++ b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/event/ShadowRuleConfigurationEventBuilder.java
@@ -48,11 +48,11 @@ public final class ShadowRuleConfigurationEventBuilder implements RuleConfigurat
         if (dataSourceName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             return createShadowConfigEvent(databaseName, dataSourceName.get(), event);
         }
-        Optional<String> tableName = ShadowNodeConverter.getTableName(event.getKey());
+        Optional<String> tableName = ShadowNodeConverter.getTableNameByActiveVersionPath(event.getKey());
         if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             return createShadowTableConfigEvent(databaseName, tableName.get(), event);
         }
-        Optional<String> algorithmName = ShadowNodeConverter.getAlgorithmName(event.getKey());
+        Optional<String> algorithmName = ShadowNodeConverter.getAlgorithmNameByActiveVersionPath(event.getKey());
         if (algorithmName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             return createShadowAlgorithmEvent(databaseName, algorithmName.get(), event);
         }
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
index a93f1f66dbb..a9c7444bf35 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/event/ShardingRuleConfigurationEventBuilder.java
@@ -66,46 +66,46 @@ public final class ShardingRuleConfigurationEventBuilder implements RuleConfigur
         if (!ShardingNodeConverter.isShardingPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
             return Optional.empty();
         }
-        Optional<String> tableName = ShardingNodeConverter.getTableName(event.getKey());
+        Optional<String> tableName = ShardingNodeConverter.getTableNameByActiveVersionPath(event.getKey());
         if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             return createShardingTableConfigEvent(databaseName, tableName.get(), event);
         }
-        Optional<String> autoTableName = ShardingNodeConverter.getAutoTableName(event.getKey());
+        Optional<String> autoTableName = ShardingNodeConverter.getAutoTableNameByActiveVersionPath(event.getKey());
         if (autoTableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             return createShardingAutoTableConfigEvent(databaseName, autoTableName.get(), event);
         }
-        Optional<String> bindingTableName = ShardingNodeConverter.getBindingTableName(event.getKey());
+        Optional<String> bindingTableName = ShardingNodeConverter.getBindingTableNameByActiveVersionPath(event.getKey());
         if (bindingTableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             return createShardingTableReferenceConfigEvent(databaseName, bindingTableName.get(), event);
         }
-        if (ShardingNodeConverter.isDefaultDatabaseStrategyPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+        if (ShardingNodeConverter.isDefaultDatabaseStrategyWithActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             return createDefaultDatabaseStrategyConfigEvent(databaseName, event);
         }
-        if (ShardingNodeConverter.isDefaultTableStrategyPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+        if (ShardingNodeConverter.isDefaultTableStrategyWithActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             return createDefaultTableStrategyConfigEvent(databaseName, event);
         }
-        if (ShardingNodeConverter.isDefaultKeyGenerateStrategyPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+        if (ShardingNodeConverter.isDefaultKeyGenerateStrategyWithActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             return createDefaultKeyGenerateStrategyConfigEvent(databaseName, event);
         }
-        if (ShardingNodeConverter.isDefaultAuditStrategyPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+        if (ShardingNodeConverter.isDefaultAuditStrategyWithActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             return createDefaultShardingAuditorStrategyConfigEvent(databaseName, event);
         }
-        if (ShardingNodeConverter.isDefaultShardingColumnPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+        if (ShardingNodeConverter.isDefaultShardingColumnWithActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             return createDefaultShardingColumnEvent(databaseName, event);
         }
-        Optional<String> algorithmName = ShardingNodeConverter.getShardingAlgorithmName(event.getKey());
+        Optional<String> algorithmName = ShardingNodeConverter.getShardingAlgorithmNameByActiveVersionPath(event.getKey());
         if (algorithmName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             return createShardingAlgorithmEvent(databaseName, algorithmName.get(), event);
         }
-        Optional<String> keyGeneratorName = ShardingNodeConverter.getKeyGeneratorName(event.getKey());
+        Optional<String> keyGeneratorName = ShardingNodeConverter.getKeyGeneratorNameByActiveVersionPath(event.getKey());
         if (keyGeneratorName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             return createKeyGeneratorEvent(databaseName, keyGeneratorName.get(), event);
         }
-        Optional<String> auditorName = ShardingNodeConverter.getAuditorName(event.getKey());
+        Optional<String> auditorName = ShardingNodeConverter.getAuditorNameByActiveVersionPath(event.getKey());
         if (auditorName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
             return createAuditorEvent(databaseName, auditorName.get(), event);
         }
-        if (ShardingNodeConverter.isShardingCachePath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
+        if (ShardingNodeConverter.isShardingCacheWithActiveVersionPath(event.getKey()) && !Strings.isNullOrEmpty(event.getValue())) {
             return createShardingCacheEvent(databaseName, event);
         }
         return Optional.empty();
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java
index acf45795c1f..5e41668ebb9 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverter.java
@@ -505,36 +505,36 @@ public final class ShardingNodeConverter {
     }
     
     /**
-     * Get sharding algorithm by active version path.
+     * Get sharding algorithm name by active version path.
      *
      * @param activeVersionPath active version path
      * @return sharding algorithm version
      */
-    public static Optional<String> getShardingAlgorithmByActiveVersionPath(final String activeVersionPath) {
+    public static Optional<String> getShardingAlgorithmNameByActiveVersionPath(final String activeVersionPath) {
         Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" + SHARDING_ALGORITHMS_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
         Matcher matcher = pattern.matcher(activeVersionPath);
         return matcher.find() ? Optional.of(matcher.group(3)) : Optional.empty();
     }
     
     /**
-     * Get key generator by active version path.
+     * Get key generator name by active version path.
      *
      * @param activeVersionPath active version path
      * @return key generator version
      */
-    public static Optional<String> getKeyGeneratorByActiveVersionPath(final String activeVersionPath) {
+    public static Optional<String> getKeyGeneratorNameByActiveVersionPath(final String activeVersionPath) {
         Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" + KEY_GENERATORS_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
         Matcher matcher = pattern.matcher(activeVersionPath);
         return matcher.find() ? Optional.of(matcher.group(3)) : Optional.empty();
     }
     
     /**
-     * Get auditor by active version path.
+     * Get auditor name by active version path.
      *
      * @param activeVersionPath active version path
      * @return auditor version
      */
-    public static Optional<String> getAuditorByActiveVersionPath(final String activeVersionPath) {
+    public static Optional<String> getAuditorNameByActiveVersionPath(final String activeVersionPath) {
         Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" + AUDITORS_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
         Matcher matcher = pattern.matcher(activeVersionPath);
         return matcher.find() ? Optional.of(matcher.group(3)) : Optional.empty();
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverterTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverterTest.java
index 51af7b819b0..b51a32e650e 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverterTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/converter/ShardingNodeConverterTest.java
@@ -208,21 +208,21 @@ class ShardingNodeConverterTest {
     
     @Test
     void assertGetShardingAlgorithmByActiveVersionPath() {
-        Optional<String> actual = ShardingNodeConverter.getShardingAlgorithmByActiveVersionPath("/metadata/foo_db/rules/sharding/algorithms/foo_table_algorithm/active_version");
+        Optional<String> actual = ShardingNodeConverter.getShardingAlgorithmNameByActiveVersionPath("/metadata/foo_db/rules/sharding/algorithms/foo_table_algorithm/active_version");
         assertTrue(actual.isPresent());
         assertThat(actual.get(), is("foo_table_algorithm"));
     }
     
     @Test
     void assertGetKeyGeneratorByActiveVersionPath() {
-        Optional<String> actual = ShardingNodeConverter.getKeyGeneratorByActiveVersionPath("/metadata/foo_db/rules/sharding/key_generators/foo_table_key_generator/active_version");
+        Optional<String> actual = ShardingNodeConverter.getKeyGeneratorNameByActiveVersionPath("/metadata/foo_db/rules/sharding/key_generators/foo_table_key_generator/active_version");
         assertTrue(actual.isPresent());
         assertThat(actual.get(), is("foo_table_key_generator"));
     }
     
     @Test
     void assertGetAuditorByActiveVersionPath() {
-        Optional<String> actual = ShardingNodeConverter.getAuditorByActiveVersionPath("/metadata/foo_db/rules/sharding/auditors/foo_table_auditor/active_version");
+        Optional<String> actual = ShardingNodeConverter.getAuditorNameByActiveVersionPath("/metadata/foo_db/rules/sharding/auditors/foo_table_auditor/active_version");
         assertTrue(actual.isPresent());
         assertThat(actual.get(), is("foo_table_auditor"));
     }