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 <[email protected]>
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);