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 2022/08/19 02:59:10 UTC
[shardingsphere] branch master updated: Fix wrong singleTableDataNodes when execute reloadRules (#20288)
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 07e725f791b Fix wrong singleTableDataNodes when execute reloadRules (#20288)
07e725f791b is described below
commit 07e725f791bc54bc187a8e9ae6a65408bbfa2cf1
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Fri Aug 19 10:58:55 2022 +0800
Fix wrong singleTableDataNodes when execute reloadRules (#20288)
---
.../infra/metadata/database/ShardingSphereDatabase.java | 11 +----------
.../infra/metadata/database/ShardingSphereDatabaseTest.java | 4 +++-
2 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
index 5e18922d5ff..14438f56057 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
@@ -33,7 +33,6 @@ import org.apache.shardingsphere.infra.metadata.database.schema.builder.SystemSc
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.builder.database.DatabaseRulesBuilder;
-import org.apache.shardingsphere.infra.rule.identifier.type.DataSourceContainedRule;
import org.apache.shardingsphere.infra.rule.identifier.type.MutableDataNodeRule;
import javax.sql.DataSource;
@@ -43,7 +42,6 @@ import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
/**
* ShardingSphere database.
@@ -184,14 +182,7 @@ public final class ShardingSphereDatabase {
RuleConfiguration config = toBeReloadedRules.stream().map(ShardingSphereRule::getConfiguration).findFirst().orElse(null);
toBeReloadedRules.stream().findFirst().ifPresent(optional -> {
ruleMetaData.getRules().removeAll(toBeReloadedRules);
- ruleMetaData.getRules().addAll(reloadRules(config, (MutableDataNodeRule) optional));
+ ruleMetaData.getRules().add(((MutableDataNodeRule) optional).reloadRule(config, name, resource.getDataSources(), ruleMetaData.getRules()));
});
}
-
- private Collection<ShardingSphereRule> reloadRules(final RuleConfiguration config, final MutableDataNodeRule mutableDataNodeRule) {
- Collection<ShardingSphereRule> result = new LinkedList<>();
- Collection<ShardingSphereRule> dataSourceContainedRules = ruleMetaData.getRules().stream().filter(each -> each instanceof DataSourceContainedRule).collect(Collectors.toList());
- result.add(mutableDataNodeRule.reloadRule(config, name, resource.getDataSources(), dataSourceContainedRules));
- return result;
- }
}
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabaseTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabaseTest.java
index 33b8b4f679c..ab8b88816b9 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabaseTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabaseTest.java
@@ -24,6 +24,7 @@ import org.apache.shardingsphere.infra.rule.identifier.type.MutableDataNodeRule;
import org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResource;
import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.rule.identifier.type.TableContainedRule;
import org.apache.shardingsphere.test.mock.MockedDataSource;
import org.junit.Test;
@@ -69,9 +70,10 @@ public final class ShardingSphereDatabaseTest {
Collection<ShardingSphereRule> rules = new LinkedList<>();
rules.add(mock(MutableDataNodeRule.class, RETURNS_DEEP_STUBS));
rules.add(mock(DataSourceContainedRule.class, RETURNS_DEEP_STUBS));
+ rules.add(mock(TableContainedRule.class, RETURNS_DEEP_STUBS));
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(rules);
ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db", mock(DatabaseType.class), resource, ruleMetaData, Collections.emptyMap());
database.reloadRules(MutableDataNodeRule.class);
- assertThat(database.getRuleMetaData().getRules().size(), is(2));
+ assertThat(database.getRuleMetaData().getRules().size(), is(3));
}
}