You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2023/04/12 02:22:49 UTC
[shardingsphere] branch master updated: Add DatabaseRuleBasedPersistService to prepare load single table #22887 (#25112)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 5a2c7e27ea9 Add DatabaseRuleBasedPersistService to prepare load single table #22887 (#25112)
5a2c7e27ea9 is described below
commit 5a2c7e27ea95acb7ed90a55bbef91f980ddd84e7
Author: zhaojinchao <zh...@apache.org>
AuthorDate: Wed Apr 12 10:22:43 2023 +0800
Add DatabaseRuleBasedPersistService to prepare load single table #22887 (#25112)
---
.../metadata/persist/MetaDataPersistService.java | 2 +-
.../config/database/DataSourcePersistService.java | 7 +---
.../database/DatabaseBasedPersistService.java | 6 +--
...e.java => DatabaseRuleBasedPersistService.java} | 44 ++--------------------
.../database/DatabaseRulePersistService.java | 16 +++++++-
.../manager/cluster/ClusterModeContextManager.java | 2 -
.../standalone/StandaloneModeContextManager.java | 7 +---
7 files changed, 24 insertions(+), 60 deletions(-)
diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
index 82f3f512957..3b941bc66d9 100644
--- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
+++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
@@ -99,7 +99,7 @@ public final class MetaDataPersistService {
if (dataSourcePropertiesMap.isEmpty() && databaseConfigs.getRuleConfigurations().isEmpty()) {
databaseMetaDataService.addDatabase(databaseName);
} else {
- dataSourceService.persist(databaseName, dataSources, rules, getDataSourcePropertiesMap(databaseConfigs.getDataSources()));
+ dataSourceService.persist(databaseName, getDataSourcePropertiesMap(databaseConfigs.getDataSources()));
databaseRulePersistService.persist(databaseName, dataSources, rules, databaseConfigs.getRuleConfigurations());
}
}
diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourcePersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourcePersistService.java
index d2a536b3a63..4dada011424 100644
--- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourcePersistService.java
+++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DataSourcePersistService.java
@@ -44,12 +44,7 @@ public final class DataSourcePersistService implements DatabaseBasedPersistServi
private final PersistRepository repository;
@Override
- public void persist(final String databaseName, final Map<String, DataSource> dataSources, final Collection<ShardingSphereRule> rules,
- final Map<String, DataSourceProperties> dataSourcePropsMap) {
- persist(databaseName, dataSourcePropsMap);
- }
-
- private void persist(final String databaseName, final Map<String, DataSourceProperties> dataSourceConfigs) {
+ public void persist(final String databaseName, final Map<String, DataSourceProperties> dataSourceConfigs) {
if (Strings.isNullOrEmpty(getDatabaseActiveVersion(databaseName))) {
repository.persist(DatabaseMetaDataNode.getActiveVersionPath(databaseName), DEFAULT_VERSION);
}
diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseBasedPersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseBasedPersistService.java
index 3a3deb0270e..2f4de995d8c 100644
--- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseBasedPersistService.java
+++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseBasedPersistService.java
@@ -24,7 +24,7 @@ import java.util.Map;
import java.util.Collection;
/**
- * Schema based persist service.
+ * Database based persist service.
*
* @param <T> type of configuration
*/
@@ -34,11 +34,9 @@ public interface DatabaseBasedPersistService<T> {
* Persist configurations.
*
* @param databaseName database name
- * @param dataSources data sources
- * @param rules rules
* @param configs configurations
*/
- void persist(String databaseName, Map<String, DataSource> dataSources, Collection<ShardingSphereRule> rules, T configs);
+ void persist(String databaseName, T configs);
/**
* Persist version configurations.
diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseBasedPersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRuleBasedPersistService.java
similarity index 56%
copy from kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseBasedPersistService.java
copy to kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRuleBasedPersistService.java
index 3a3deb0270e..ee2c7257b1d 100644
--- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseBasedPersistService.java
+++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRuleBasedPersistService.java
@@ -20,15 +20,15 @@ package org.apache.shardingsphere.metadata.persist.service.config.database;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import javax.sql.DataSource;
-import java.util.Map;
import java.util.Collection;
+import java.util.Map;
/**
- * Schema based persist service.
- *
+ * Database rule based persist service.
+ *
* @param <T> type of configuration
*/
-public interface DatabaseBasedPersistService<T> {
+public interface DatabaseRuleBasedPersistService<T> extends DatabaseBasedPersistService<T> {
/**
* Persist configurations.
@@ -39,40 +39,4 @@ public interface DatabaseBasedPersistService<T> {
* @param configs configurations
*/
void persist(String databaseName, Map<String, DataSource> dataSources, Collection<ShardingSphereRule> rules, T configs);
-
- /**
- * Persist version configurations.
- *
- * @param databaseName database name
- * @param version version
- * @param dataSources data sources
- * @param rules rules
- * @param configs configurations
- */
- void persist(String databaseName, String version, Map<String, DataSource> dataSources, Collection<ShardingSphereRule> rules, T configs);
-
- /**
- * Load configurations.
- *
- * @param databaseName database name
- * @return configurations
- */
- T load(String databaseName);
-
- /**
- * Load configurations based version.
- *
- * @param databaseName database name
- * @param version version
- * @return configurations
- */
- T load(String databaseName, String version);
-
- /**
- * Judge whether schema configuration existed.
- *
- * @param databaseName database name
- * @return configuration existed or not
- */
- boolean isExisted(String databaseName);
}
diff --git a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java
index 1a63ca4de62..1de8ac02629 100644
--- a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java
+++ b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/DatabaseRulePersistService.java
@@ -36,7 +36,7 @@ import java.util.Map;
* Database rule persist service.
*/
@RequiredArgsConstructor
-public final class DatabaseRulePersistService implements DatabaseBasedPersistService<Collection<RuleConfiguration>> {
+public final class DatabaseRulePersistService implements DatabaseRuleBasedPersistService<Collection<RuleConfiguration>> {
private static final String DEFAULT_VERSION = "0";
@@ -52,12 +52,26 @@ public final class DatabaseRulePersistService implements DatabaseBasedPersistSer
YamlEngine.marshal(createYamlRuleConfigurations(dataSources, rules, configs)));
}
+ @Override
+ public void persist(final String databaseName, final Collection<RuleConfiguration> configs) {
+ if (Strings.isNullOrEmpty(getDatabaseActiveVersion(databaseName))) {
+ repository.persist(DatabaseMetaDataNode.getActiveVersionPath(databaseName), DEFAULT_VERSION);
+ }
+ repository.persist(DatabaseMetaDataNode.getRulePath(databaseName, getDatabaseActiveVersion(databaseName)),
+ YamlEngine.marshal(createYamlRuleConfigurations(configs)));
+ }
+
@Override
public void persist(final String databaseName, final String version, final Map<String, DataSource> dataSources,
final Collection<ShardingSphereRule> rules, final Collection<RuleConfiguration> configs) {
repository.persist(DatabaseMetaDataNode.getRulePath(databaseName, version), YamlEngine.marshal(createYamlRuleConfigurations(dataSources, rules, configs)));
}
+ private Collection<YamlRuleConfiguration> createYamlRuleConfigurations(final Collection<RuleConfiguration> ruleConfigs) {
+ return new YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(ruleConfigs);
+ }
+
+ // TODO Load single table refer to #22887
private Collection<YamlRuleConfiguration> createYamlRuleConfigurations(final Map<String, DataSource> dataSources, final Collection<ShardingSphereRule> rules,
final Collection<RuleConfiguration> ruleConfigs) {
return new YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(ruleConfigs);
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java
index 0f1815ff005..81212bd8ece 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java
@@ -99,8 +99,6 @@ public final class ClusterModeContextManager implements ModeContextManager, Cont
@Override
public void unregisterStorageUnits(final String databaseName, final Collection<String> toBeDroppedStorageUnitNames) {
contextManager.getMetaDataContexts().getPersistService().getDataSourceService().persist(databaseName,
- contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData().getDataSources(),
- contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getRuleMetaData().getRules(),
getToBeReversedDataSourcePropsMap(contextManager.getMetaDataContexts().getPersistService().getDataSourceService().load(databaseName), toBeDroppedStorageUnitNames));
}
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 2fcf620cd92..7754978fc55 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
@@ -237,8 +237,6 @@ public final class StandaloneModeContextManager implements ModeContextManager, C
contextManager.renewMetaDataContexts(reloadMetaDataContexts);
Map<String, DataSourceProperties> toBeReversedDataSourcePropsMap = getToBeReversedDataSourcePropsMap(dataSourcePropsMap, toBeDroppedStorageUnitNames);
contextManager.getMetaDataContexts().getPersistService().getDataSourceService().persist(contextManager.getMetaDataContexts().getMetaData().getActualDatabaseName(databaseName),
- contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData().getDataSources(),
- contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getRuleMetaData().getRules(),
toBeReversedDataSourcePropsMap);
switchingResource.closeStaleDataSources();
clearServiceCache();
@@ -256,10 +254,7 @@ public final class StandaloneModeContextManager implements ModeContextManager, C
public void alterRuleConfiguration(final String databaseName, final Collection<RuleConfiguration> ruleConfigs) {
contextManager.alterRuleConfiguration(databaseName, ruleConfigs);
contextManager.getMetaDataContexts().getPersistService()
- .getDatabaseRulePersistService().persist(contextManager.getMetaDataContexts().getMetaData().getActualDatabaseName(databaseName),
- contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData().getDataSources(),
- contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getRuleMetaData().getRules(),
- ruleConfigs);
+ .getDatabaseRulePersistService().persist(contextManager.getMetaDataContexts().getMetaData().getActualDatabaseName(databaseName), ruleConfigs);
clearServiceCache();
}