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 2024/05/23 04:40:40 UTC
(shardingsphere) branch master updated: Refactor alterRuleConfiguration and removeRuleConfigurationItem interface in StandaloneModeContextManager (#31347)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 eca90be4dd1 Refactor alterRuleConfiguration and removeRuleConfigurationItem interface in StandaloneModeContextManager (#31347)
eca90be4dd1 is described below
commit eca90be4dd105484af687051a942a429ed15b86c
Author: zhaojinchao <zh...@apache.org>
AuthorDate: Thu May 23 12:40:34 2024 +0800
Refactor alterRuleConfiguration and removeRuleConfigurationItem interface in StandaloneModeContextManager (#31347)
* Refactor alterRuleConfiguration and removeRuleConfigurationItem interface in StandaloneModeContextManager
* Fix checkstyle
* Fix checkstyle
* Fix checkstyle
---
.../metadata/builder/RuleConfigurationEventBuilder.java | 3 ++-
.../manager/standalone/StandaloneModeContextManager.java | 13 ++++++++++++-
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/builder/RuleConfigurationEventBuilder.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/builder/RuleConfigurationEventBuilder.java
index 0b9f2e6ef13..758c5b8460f 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/builder/RuleConfigurationEventBuilder.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/builder/RuleConfigurationEventBuilder.java
@@ -24,6 +24,7 @@ import org.apache.shardingsphere.mode.path.rule.item.UniqueRuleItemNodePath;
import org.apache.shardingsphere.infra.rule.event.GovernanceEvent;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
import org.apache.shardingsphere.mode.event.NamedRuleItemChangedEventCreator;
import org.apache.shardingsphere.mode.event.UniqueRuleItemChangedEventCreator;
import org.apache.shardingsphere.mode.spi.RuleNodePathProvider;
@@ -54,7 +55,7 @@ public final class RuleConfigurationEventBuilder {
}
private Optional<GovernanceEvent> build(final RuleNodePath ruleNodePath, final String databaseName, final DataChangedEvent event) {
- if (!ruleNodePath.getRoot().isValidatedPath(event.getKey()) || Strings.isNullOrEmpty(event.getValue())) {
+ if (!ruleNodePath.getRoot().isValidatedPath(event.getKey()) || Type.DELETED != event.getType() && Strings.isNullOrEmpty(event.getValue())) {
return Optional.empty();
}
for (Entry<String, NamedRuleItemNodePath> entry : ruleNodePath.getNamedItems().entrySet()) {
diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java
index 2f08536cab2..716cd34548e 100644
--- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java
+++ b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java
@@ -289,12 +289,23 @@ public final class StandaloneModeContextManager implements ModeContextManager, C
@Override
public void removeRuleConfigurationItem(final String databaseName, final RuleConfiguration toBeRemovedRuleConfig) {
if (null != toBeRemovedRuleConfig) {
- sendDatabaseRuleChangedEvent(databaseName,
+ sendDatabaseRuleDeletedEvent(databaseName,
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().deleteConfigurations(databaseName, Collections.singleton(toBeRemovedRuleConfig)));
clearServiceCache();
}
}
+ private void sendDatabaseRuleDeletedEvent(final String databaseName, final Collection<MetaDataVersion> metaDataVersions) {
+ for (MetaDataVersion each : metaDataVersions) {
+ sendDatabaseRuleDeletedEvent(databaseName, each);
+ }
+ }
+
+ private void sendDatabaseRuleDeletedEvent(final String databaseName, final MetaDataVersion metaDataVersion) {
+ ruleConfigurationEventBuilder.build(databaseName, new DataChangedEvent(metaDataVersion.getActiveVersionNodePath(), "", Type.DELETED))
+ .ifPresent(optional -> contextManager.getComputeNodeInstanceContext().getEventBusContext().post(optional));
+ }
+
@Override
public void removeRuleConfiguration(final String databaseName, final String ruleName) {
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().delete(databaseName, ruleName);