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"));
}