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/24 13:12:31 UTC
[shardingsphere] branch master updated: Refactor mask event & subscriber (#26482)
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 e996aad9a8c Refactor mask event & subscriber (#26482)
e996aad9a8c is described below
commit e996aad9a8c723402263b3cf4956dc92286735a9
Author: ChenJiaHao <Pa...@163.com>
AuthorDate: Sat Jun 24 21:12:24 2023 +0800
Refactor mask event & subscriber (#26482)
---
.../event/MaskRuleConfigurationEventBuilder.java | 49 +++++++---------------
.../event/algorithm/AlterMaskAlgorithmEvent.java | 3 --
.../event/algorithm/DeleteMaskAlgorithmEvent.java | 4 --
.../AddMaskTableEvent.java} | 7 +---
.../AlterMaskTableEvent.java} | 6 +--
.../DeleteMaskTableEvent.java} | 13 ++----
.../mask/metadata/converter/MaskNodeConverter.java | 30 ++++++-------
.../mask/subscriber/MaskAlgorithmSubscriber.java | 11 ++++-
...ionSubscriber.java => MaskTableSubscriber.java} | 30 +++++++------
...nfra.rule.RuleConfigurationSubscribeCoordinator | 2 +-
.../metadata/converter/MaskNodeConverterTest.java | 8 ++--
...riteSplittingRuleConfigurationEventBuilder.java | 2 +-
.../event/loadbalance/DeleteLoadBalanceEvent.java | 4 --
.../ReadwriteSplittingLoadBalanceSubscriber.java | 3 --
14 files changed, 71 insertions(+), 101 deletions(-)
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
index 8935941a895..36526253f7d 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/MaskRuleConfigurationEventBuilder.java
@@ -18,20 +18,13 @@
package org.apache.shardingsphere.mask.event;
import com.google.common.base.Strings;
-import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
-import org.apache.shardingsphere.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
-import org.apache.shardingsphere.infra.yaml.config.swapper.algorithm.YamlAlgorithmConfigurationSwapper;
-import org.apache.shardingsphere.mask.api.config.rule.MaskTableRuleConfiguration;
import org.apache.shardingsphere.mask.event.algorithm.AlterMaskAlgorithmEvent;
import org.apache.shardingsphere.mask.event.algorithm.DeleteMaskAlgorithmEvent;
-import org.apache.shardingsphere.mask.event.config.AddMaskConfigurationEvent;
-import org.apache.shardingsphere.mask.event.config.AlterMaskConfigurationEvent;
-import org.apache.shardingsphere.mask.event.config.DeleteMaskConfigurationEvent;
+import org.apache.shardingsphere.mask.event.table.AddMaskTableEvent;
+import org.apache.shardingsphere.mask.event.table.AlterMaskTableEvent;
+import org.apache.shardingsphere.mask.event.table.DeleteMaskTableEvent;
import org.apache.shardingsphere.mask.metadata.converter.MaskNodeConverter;
-import org.apache.shardingsphere.mask.yaml.config.rule.YamlMaskTableRuleConfiguration;
-import org.apache.shardingsphere.mask.yaml.swapper.rule.YamlMaskTableRuleConfigurationSwapper;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
import org.apache.shardingsphere.mode.spi.RuleConfigurationEventBuilder;
@@ -48,45 +41,31 @@ public final class MaskRuleConfigurationEventBuilder implements RuleConfiguratio
if (!MaskNodeConverter.isMaskPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
- Optional<String> tableName = MaskNodeConverter.getTableName(event.getKey());
+ Optional<String> tableName = MaskNodeConverter.getTableNameByActiveVersionPath(event.getKey());
if (tableName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
- Optional<String> version = MaskNodeConverter.getMaskTableVersion(event.getKey());
- if (version.isPresent()) {
- return createMaskConfigEvent(databaseName, tableName.get(), version.get(), event);
- }
+ return createMaskConfigEvent(databaseName, tableName.get(), event);
}
- Optional<String> algorithmName = MaskNodeConverter.getAlgorithmName(event.getKey());
+ Optional<String> algorithmName = MaskNodeConverter.getAlgorithmNameByActiveVersionPath(event.getKey());
if (algorithmName.isPresent() && !Strings.isNullOrEmpty(event.getValue())) {
- Optional<String> algorithmVersion = MaskNodeConverter.getMaskAlgorithmVersion(event.getKey());
- if (algorithmVersion.isPresent()) {
- return createMaskAlgorithmEvent(databaseName, algorithmName.get(), algorithmVersion.get(), event);
- }
+ return createMaskAlgorithmEvent(databaseName, algorithmName.get(), event);
}
return Optional.empty();
}
- private Optional<GovernanceEvent> createMaskConfigEvent(final String databaseName, final String tableName, final String version, final DataChangedEvent event) {
+ private Optional<GovernanceEvent> createMaskConfigEvent(final String databaseName, final String tableName, final DataChangedEvent event) {
if (Type.ADDED == event.getType()) {
- return Optional.of(new AddMaskConfigurationEvent(databaseName, swapMaskTableRuleConfig(event.getValue()), event.getKey(), version));
+ return Optional.of(new AddMaskTableEvent(databaseName, event.getKey(), event.getValue()));
}
if (Type.UPDATED == event.getType()) {
- return Optional.of(new AlterMaskConfigurationEvent(databaseName, tableName, swapMaskTableRuleConfig(event.getValue()), event.getKey(), version));
+ return Optional.of(new AlterMaskTableEvent(databaseName, tableName, event.getKey(), event.getValue()));
}
- return Optional.of(new DeleteMaskConfigurationEvent(databaseName, tableName, event.getKey(), version));
+ return Optional.of(new DeleteMaskTableEvent(databaseName, tableName));
}
- private MaskTableRuleConfiguration swapMaskTableRuleConfig(final String yamlContext) {
- return new YamlMaskTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlMaskTableRuleConfiguration.class));
- }
-
- private Optional<GovernanceEvent> createMaskAlgorithmEvent(final String databaseName, final String algorithmName, final String version, final DataChangedEvent event) {
+ private Optional<GovernanceEvent> createMaskAlgorithmEvent(final String databaseName, final String algorithmName, final DataChangedEvent event) {
if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
- return Optional.of(new AlterMaskAlgorithmEvent(databaseName, algorithmName, swapToAlgorithmConfig(event.getValue()), event.getKey(), version));
+ return Optional.of(new AlterMaskAlgorithmEvent(databaseName, algorithmName, event.getKey(), event.getValue()));
}
- return Optional.of(new DeleteMaskAlgorithmEvent(databaseName, algorithmName, event.getKey(), version));
- }
-
- private AlgorithmConfiguration swapToAlgorithmConfig(final String yamlContext) {
- return new YamlAlgorithmConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlAlgorithmConfiguration.class));
+ return Optional.of(new DeleteMaskAlgorithmEvent(databaseName, algorithmName));
}
}
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java
index 3b28cbc7529..51e76c92ad1 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/AlterMaskAlgorithmEvent.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.mask.event.algorithm;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
/**
@@ -33,8 +32,6 @@ public final class AlterMaskAlgorithmEvent implements GovernanceEvent {
private final String algorithmName;
- private final AlgorithmConfiguration config;
-
private final String activeVersionKey;
private final String activeVersion;
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java
index f2c425dad79..07f484e4e86 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/algorithm/DeleteMaskAlgorithmEvent.java
@@ -31,8 +31,4 @@ public final class DeleteMaskAlgorithmEvent implements GovernanceEvent {
private final String databaseName;
private final String algorithmName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
}
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AddMaskConfigurationEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/AddMaskTableEvent.java
similarity index 81%
rename from features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AddMaskConfigurationEvent.java
rename to features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/AddMaskTableEvent.java
index 647f7568384..61ec590a9f0 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AddMaskConfigurationEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/AddMaskTableEvent.java
@@ -15,24 +15,21 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.mask.event.config;
+package org.apache.shardingsphere.mask.event.table;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import org.apache.shardingsphere.mask.api.config.rule.MaskTableRuleConfiguration;
/**
* Add mask configuration event.
*/
@RequiredArgsConstructor
@Getter
-public final class AddMaskConfigurationEvent implements GovernanceEvent {
+public final class AddMaskTableEvent implements GovernanceEvent {
private final String databaseName;
- private final MaskTableRuleConfiguration config;
-
private final String activeVersionKey;
private final String activeVersion;
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/DeleteMaskConfigurationEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/AlterMaskTableEvent.java
similarity index 87%
rename from features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/DeleteMaskConfigurationEvent.java
rename to features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/AlterMaskTableEvent.java
index 8f2ffcf6f37..80d7ca27d1f 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/DeleteMaskConfigurationEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/AlterMaskTableEvent.java
@@ -15,18 +15,18 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.mask.event.config;
+package org.apache.shardingsphere.mask.event.table;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
/**
- * Delete mask configuration event.
+ * Alter mask configuration event.
*/
@RequiredArgsConstructor
@Getter
-public final class DeleteMaskConfigurationEvent implements GovernanceEvent {
+public final class AlterMaskTableEvent implements GovernanceEvent {
private final String databaseName;
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AlterMaskConfigurationEvent.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/DeleteMaskTableEvent.java
similarity index 72%
rename from features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AlterMaskConfigurationEvent.java
rename to features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/DeleteMaskTableEvent.java
index 2e16f8f87b9..9b09785f3a3 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/config/AlterMaskConfigurationEvent.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/event/table/DeleteMaskTableEvent.java
@@ -15,27 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.mask.event.config;
+package org.apache.shardingsphere.mask.event.table;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
-import org.apache.shardingsphere.mask.api.config.rule.MaskTableRuleConfiguration;
/**
- * Alter mask configuration event.
+ * Delete mask configuration event.
*/
@RequiredArgsConstructor
@Getter
-public final class AlterMaskConfigurationEvent implements GovernanceEvent {
+public final class DeleteMaskTableEvent implements GovernanceEvent {
private final String databaseName;
private final String tableName;
-
- private final MaskTableRuleConfiguration config;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
}
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.java
index d08b45d470e..fa021809e62 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.java
@@ -40,7 +40,7 @@ public final class MaskNodeConverter {
private static final String RULE_NAME_PATTERN = "/([\\w\\-]+)?";
- private static final String RULE_VERSION = "/([\\w\\-]+)/versions/([\\w\\-]+)$";
+ private static final String RULE_ACTIVE_VERSION = "/([\\w\\-]+)/active_version$";
/**
* Get table name path.
@@ -123,26 +123,26 @@ public final class MaskNodeConverter {
}
/**
- * Get mask table version.
+ * Get table name by active version.
*
- * @param rulePath rule path
- * @return mask table version
+ * @param activeVersionPath active version path
+ * @return table name
*/
- public static Optional<String> getMaskTableVersion(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" + TABLES_NODE + RULE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(4)) : Optional.empty();
+ public static Optional<String> getTableNameByActiveVersionPath(final String activeVersionPath) {
+ Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" + TABLES_NODE + RULE_ACTIVE_VERSION, Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(activeVersionPath);
+ return matcher.find() ? Optional.of(matcher.group(3)) : Optional.empty();
}
/**
- * Get mask algorithm version.
+ * Get algorithm name by active version.
*
- * @param rulePath rule path
- * @return mask algorithm version
+ * @param activeVersionPath active version path
+ * @return algorithm name
*/
- public static Optional<String> getMaskAlgorithmVersion(final String rulePath) {
- Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" + ALGORITHMS_NODE + RULE_VERSION, Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(rulePath);
- return matcher.find() ? Optional.of(matcher.group(4)) : Optional.empty();
+ public static Optional<String> getAlgorithmNameByActiveVersionPath(final String activeVersionPath) {
+ Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" + ALGORITHMS_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/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskAlgorithmSubscriber.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskAlgorithmSubscriber.java
index 2a13600aa93..2deb6bcbef6 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskAlgorithmSubscriber.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskAlgorithmSubscriber.java
@@ -19,9 +19,13 @@ package org.apache.shardingsphere.mask.subscriber;
import com.google.common.eventbus.Subscribe;
import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
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.infra.yaml.config.pojo.algorithm.YamlAlgorithmConfiguration;
+import org.apache.shardingsphere.infra.yaml.config.swapper.algorithm.YamlAlgorithmConfigurationSwapper;
import org.apache.shardingsphere.mask.api.config.MaskRuleConfiguration;
import org.apache.shardingsphere.mask.event.algorithm.AlterMaskAlgorithmEvent;
import org.apache.shardingsphere.mask.event.algorithm.DeleteMaskAlgorithmEvent;
@@ -57,7 +61,8 @@ public final class MaskAlgorithmSubscriber implements RuleConfigurationSubscribe
public synchronized void renew(final AlterMaskAlgorithmEvent event) {
ShardingSphereDatabase database = databases.get(event.getDatabaseName());
MaskRuleConfiguration config = (MaskRuleConfiguration) database.getRuleMetaData().getSingleRule(MaskRule.class).getConfiguration();
- config.getMaskAlgorithms().put(event.getAlgorithmName(), event.getConfig());
+ config.getMaskAlgorithms().put(event.getAlgorithmName(), swapToAlgorithmConfig(
+ instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
}
/**
@@ -72,4 +77,8 @@ public final class MaskAlgorithmSubscriber implements RuleConfigurationSubscribe
config.getMaskAlgorithms().remove(event.getAlgorithmName());
instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
+
+ private AlgorithmConfiguration swapToAlgorithmConfig(final String yamlContext) {
+ return new YamlAlgorithmConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlAlgorithmConfiguration.class));
+ }
}
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskConfigurationSubscriber.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskTableSubscriber.java
similarity index 75%
rename from features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskConfigurationSubscriber.java
rename to features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskTableSubscriber.java
index c34d5906793..c2fb4614e97 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskConfigurationSubscriber.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/subscriber/MaskTableSubscriber.java
@@ -22,12 +22,15 @@ import lombok.RequiredArgsConstructor;
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.mask.api.config.MaskRuleConfiguration;
import org.apache.shardingsphere.mask.api.config.rule.MaskTableRuleConfiguration;
-import org.apache.shardingsphere.mask.event.config.AddMaskConfigurationEvent;
-import org.apache.shardingsphere.mask.event.config.AlterMaskConfigurationEvent;
-import org.apache.shardingsphere.mask.event.config.DeleteMaskConfigurationEvent;
+import org.apache.shardingsphere.mask.event.table.AddMaskTableEvent;
+import org.apache.shardingsphere.mask.event.table.AlterMaskTableEvent;
+import org.apache.shardingsphere.mask.event.table.DeleteMaskTableEvent;
import org.apache.shardingsphere.mask.rule.MaskRule;
+import org.apache.shardingsphere.mask.yaml.config.rule.YamlMaskTableRuleConfiguration;
+import org.apache.shardingsphere.mask.yaml.swapper.rule.YamlMaskTableRuleConfigurationSwapper;
import org.apache.shardingsphere.mode.event.config.DatabaseRuleConfigurationChangedEvent;
import java.util.Collections;
@@ -39,7 +42,7 @@ import java.util.Optional;
*/
@SuppressWarnings("UnstableApiUsage")
@RequiredArgsConstructor
-public final class MaskConfigurationSubscriber implements RuleConfigurationSubscribeCoordinator {
+public final class MaskTableSubscriber implements RuleConfigurationSubscribeCoordinator {
private Map<String, ShardingSphereDatabase> databases;
@@ -58,12 +61,13 @@ public final class MaskConfigurationSubscriber implements RuleConfigurationSubsc
* @param event add mask configuration event
*/
@Subscribe
- public synchronized void renew(final AddMaskConfigurationEvent event) {
+ public synchronized void renew(final AddMaskTableEvent event) {
if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = databases.get(event.getDatabaseName());
- MaskTableRuleConfiguration needToAddedConfig = event.getConfig();
+ MaskTableRuleConfiguration needToAddedConfig = swapMaskTableRuleConfig(
+ instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
Optional<MaskRule> rule = database.getRuleMetaData().findSingleRule(MaskRule.class);
MaskRuleConfiguration config;
if (rule.isPresent()) {
@@ -82,12 +86,13 @@ public final class MaskConfigurationSubscriber implements RuleConfigurationSubsc
* @param event alter mask configuration event
*/
@Subscribe
- public synchronized void renew(final AlterMaskConfigurationEvent event) {
+ public synchronized void renew(final AlterMaskTableEvent event) {
if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
return;
}
ShardingSphereDatabase database = databases.get(event.getDatabaseName());
- MaskTableRuleConfiguration needToAlteredConfig = event.getConfig();
+ MaskTableRuleConfiguration needToAlteredConfig = swapMaskTableRuleConfig(
+ instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
MaskRuleConfiguration config = (MaskRuleConfiguration) database.getRuleMetaData().getSingleRule(MaskRule.class).getConfiguration();
config.getTables().removeIf(each -> each.getName().equals(event.getTableName()));
config.getTables().add(needToAlteredConfig);
@@ -100,13 +105,14 @@ public final class MaskConfigurationSubscriber implements RuleConfigurationSubsc
* @param event delete mask configuration event
*/
@Subscribe
- public synchronized void renew(final DeleteMaskConfigurationEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
- return;
- }
+ public synchronized void renew(final DeleteMaskTableEvent event) {
ShardingSphereDatabase database = databases.get(event.getDatabaseName());
MaskRuleConfiguration config = (MaskRuleConfiguration) database.getRuleMetaData().getSingleRule(MaskRule.class).getConfiguration();
config.getTables().removeIf(each -> each.getName().equals(event.getTableName()));
instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
}
+
+ private MaskTableRuleConfiguration swapMaskTableRuleConfig(final String yamlContext) {
+ return new YamlMaskTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlMaskTableRuleConfiguration.class));
+ }
}
diff --git a/features/mask/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator b/features/mask/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator
index 286c20177a0..749bb19047f 100644
--- a/features/mask/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator
+++ b/features/mask/core/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.RuleConfigurationSubscribeCoordinator
@@ -15,5 +15,5 @@
# limitations under the License.
#
-org.apache.shardingsphere.mask.subscriber.MaskConfigurationSubscriber
+org.apache.shardingsphere.mask.subscriber.MaskTableSubscriber
org.apache.shardingsphere.mask.subscriber.MaskAlgorithmSubscriber
diff --git a/features/mask/core/src/test/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverterTest.java b/features/mask/core/src/test/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverterTest.java
index b8a61aea3dd..3ecaa742599 100644
--- a/features/mask/core/src/test/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverterTest.java
+++ b/features/mask/core/src/test/java/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverterTest.java
@@ -64,15 +64,15 @@ class MaskNodeConverterTest {
@Test
void assertGetMaskTableVersion() {
- Optional<String> actual = MaskNodeConverter.getMaskTableVersion("/metadata/foo_db/rules/mask/tables/foo_table/versions/1");
+ Optional<String> actual = MaskNodeConverter.getTableNameByActiveVersionPath("/metadata/foo_db/rules/mask/tables/foo_table/active_version");
assertTrue(actual.isPresent());
- assertThat(actual.get(), is("1"));
+ assertThat(actual.get(), is("foo_table"));
}
@Test
void assertGetMaskAlgorithmVersion() {
- Optional<String> actual = MaskNodeConverter.getMaskAlgorithmVersion("/metadata/foo_db/rules/mask/algorithms/md5_mask/versions/1");
+ Optional<String> actual = MaskNodeConverter.getAlgorithmNameByActiveVersionPath("/metadata/foo_db/rules/mask/algorithms/md5_mask/active_version");
assertTrue(actual.isPresent());
- assertThat(actual.get(), is("1"));
+ assertThat(actual.get(), is("md5_mask"));
}
}
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 ce11b68c31e..acf75c969e7 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
@@ -66,6 +66,6 @@ public final class ReadwriteSplittingRuleConfigurationEventBuilder implements Ru
if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
return Optional.of(new AlterLoadBalanceEvent(databaseName, loadBalancerName, event.getKey(), event.getValue()));
}
- return Optional.of(new DeleteLoadBalanceEvent(databaseName, loadBalancerName, event.getKey(), event.getValue()));
+ return Optional.of(new DeleteLoadBalanceEvent(databaseName, loadBalancerName));
}
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
index 6dcf83a6232..99397c8b4f0 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/event/loadbalance/DeleteLoadBalanceEvent.java
@@ -31,8 +31,4 @@ public final class DeleteLoadBalanceEvent implements GovernanceEvent {
private final String databaseName;
private final String loadBalanceName;
-
- private final String activeVersionKey;
-
- private final String activeVersion;
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
index e665d34ee26..df039252871 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/subscriber/ReadwriteSplittingLoadBalanceSubscriber.java
@@ -75,9 +75,6 @@ public final class ReadwriteSplittingLoadBalanceSubscriber implements RuleConfig
*/
@Subscribe
public synchronized void renew(final DeleteLoadBalanceEvent event) {
- if (!event.getActiveVersion().equals(instanceContext.getModeContextManager().getActiveVersionByKey(event.getActiveVersionKey()))) {
- return;
- }
ShardingSphereDatabase database = databases.get(event.getDatabaseName());
ReadwriteSplittingRuleConfiguration config = (ReadwriteSplittingRuleConfiguration) database.getRuleMetaData().getSingleRule(ReadwriteSplittingRule.class).getConfiguration();
config.getLoadBalancers().remove(event.getLoadBalanceName());