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/26 03:48:20 UTC
[shardingsphere] branch master updated: Fix new metadata persist and renew (#26568)
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 1540d6cecd1 Fix new metadata persist and renew (#26568)
1540d6cecd1 is described below
commit 1540d6cecd1a241ada3e2ee0012e8cb17d6af952
Author: ChenJiaHao <Pa...@163.com>
AuthorDate: Mon Jun 26 11:48:14 2023 +0800
Fix new metadata persist and renew (#26568)
---
.../persist/service/version/MetaDataVersionPersistService.java | 3 +++
.../org/apache/shardingsphere/mode/manager/ContextManager.java | 10 ++--------
2 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java
index 18e85df5ea1..6967d0337fa 100644
--- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java
+++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/version/MetaDataVersionPersistService.java
@@ -39,6 +39,9 @@ public final class MetaDataVersionPersistService implements MetaDataVersionBased
@Override
public void switchActiveVersion(final Collection<MetaDataVersion> metaDataVersions) {
for (MetaDataVersion each : metaDataVersions) {
+ if (each.getNextActiveVersion().equals(each.getCurrentActiveVersion())) {
+ continue;
+ }
repository.persist(each.getKey() + "/" + ACTIVE_VERSION, each.getNextActiveVersion());
repository.delete(String.join("/", each.getKey(), VERSIONS, each.getCurrentActiveVersion()));
}
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index 15fb11d1629..378e3a6e81f 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -350,11 +350,11 @@ public final class ContextManager implements AutoCloseable {
* @param databaseName database name
* @param ruleConfig rule configurations
*/
- @SuppressWarnings("rawtypes")
public synchronized void alterRuleConfiguration(final String databaseName, final RuleConfiguration ruleConfig) {
try {
ShardingSphereDatabase database = metaDataContexts.get().getMetaData().getDatabase(databaseName);
Collection<ShardingSphereRule> rules = new LinkedList<>(database.getRuleMetaData().getRules());
+ rules.removeIf(each -> each.getConfiguration().getClass().isAssignableFrom(ruleConfig.getClass()));
rules.addAll(DatabaseRulesBuilder.build(databaseName, database.getResourceMetaData().getDataSources(), database.getRuleMetaData().getRules(),
ruleConfig, instanceContext));
database.getRuleMetaData().getRules().clear();
@@ -565,7 +565,6 @@ public final class ContextManager implements AutoCloseable {
* @param ruleName rule name
* @param ruleConfig global rule configuration
*/
- @SuppressWarnings("rawtypes")
public synchronized void alterGlobalRuleConfiguration(final String ruleName, final RuleConfiguration ruleConfig) {
Collection<ShardingSphereRule> rules = removeSingleGlobalRule(ruleName);
rules.addAll(GlobalRulesBuilder.buildRules(Collections.singletonList(ruleConfig), metaDataContexts.get().getMetaData().getDatabases(),
@@ -596,12 +595,7 @@ public final class ContextManager implements AutoCloseable {
private Collection<ShardingSphereRule> removeSingleGlobalRule(final String ruleSimpleName) {
Collection<ShardingSphereRule> result = new LinkedList<>(metaDataContexts.get().getMetaData().getGlobalRuleMetaData().getRules());
- for (ShardingSphereRule each : result) {
- if (!each.getType().equals(ruleSimpleName)) {
- continue;
- }
- result.remove(each);
- }
+ result.removeIf(each -> each.getType().equals(ruleSimpleName));
return result;
}