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 e77c3148d45 Fix checkstyle for ContextManager (#18808)
e77c3148d45 is described below
commit e77c3148d458ef40e6231bf8b7c48b6f0e7f5e31
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Jul 3 20:41:12 2022 +0800
Fix checkstyle for ContextManager (#18808)
* Refactor ContextManager
* Fix checkstyle for ContextManager
---
.../mode/manager/ContextManager.java | 55 +++++++++++-----------
1 file changed, 28 insertions(+), 27 deletions(-)
diff --git
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index d3c7057cfd4..8e09426e118 100644
---
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -221,30 +221,6 @@ public final class ContextManager implements AutoCloseable
{
metaDataContexts.getPersistService().ifPresent(optional ->
optional.getDataSourceService().append(databaseName,
toBeAlteredDataSourcePropsMap));
}
- private void refreshMetaDataContext(final String databaseName, final
Map<String, DataSourceProperties> dataSourcePropsMap) throws SQLException {
- MetaDataContexts changedMetaDataContexts =
buildChangedMetaDataContextWithAddedDataSource(databaseName,
dataSourcePropsMap);
-
metaDataContexts.getMetaData().getDatabases().putAll(changedMetaDataContexts.getMetaData().getDatabases());
-
metaDataContexts.getOptimizerContext().getFederationMetaData().getDatabases().putAll(changedMetaDataContexts.getOptimizerContext().getFederationMetaData().getDatabases());
-
metaDataContexts.getOptimizerContext().getParserContexts().putAll(changedMetaDataContexts.getOptimizerContext().getParserContexts());
-
metaDataContexts.getOptimizerContext().getPlannerContexts().putAll(changedMetaDataContexts.getOptimizerContext().getPlannerContexts());
-
metaDataContexts.getMetaData().getGlobalRuleMetaData().findRules(ResourceHeldRule.class).forEach(each
->
each.addResource(metaDataContexts.getMetaData().getDatabases().get(databaseName)));
- }
-
- private MetaDataContexts
buildChangedMetaDataContextWithAddedDataSource(final String databaseName, final
Map<String, DataSourceProperties> addedDataSourceProps) throws SQLException {
- ShardingSphereDatabase database =
metaDataContexts.getMetaData().getDatabases().get(databaseName);
- Map<String, DataSource> dataSourceMap = new
HashMap<>(database.getResource().getDataSources());
-
dataSourceMap.putAll(DataSourcePoolCreator.create(addedDataSourceProps));
- ConfigurationProperties props =
metaDataContexts.getMetaData().getProps();
- DatabaseConfiguration databaseConfig = new
DataSourceProvidedDatabaseConfiguration(dataSourceMap,
database.getRuleMetaData().getConfigurations());
- Map<String, ShardingSphereDatabase> databases =
ShardingSphereDatabasesFactory.create(Collections.singletonMap(database.getName(),
databaseConfig), props, instanceContext);
- ShardingSphereRuleMetaData globalMetaData = new
ShardingSphereRuleMetaData(
-
GlobalRulesBuilder.buildRules(metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(),
databases, instanceContext));
- ShardingSphereMetaData metaData = new
ShardingSphereMetaData(databases, globalMetaData, props);
- MetaDataContexts result = new
MetaDataContexts(metaDataContexts.getPersistService().orElse(null), metaData,
OptimizerContextFactory.create(databases, globalMetaData));
- persistMetaData(result);
- return result;
- }
-
/**
* Drop resource.
*
@@ -268,7 +244,7 @@ public final class ContextManager implements AutoCloseable {
*/
public void alterRuleConfiguration(final String databaseName, final
Collection<RuleConfiguration> ruleConfigs) {
try {
- MetaDataContexts changedMetaDataContexts =
buildChangedMetaDataContext(metaDataContexts.getMetaData().getDatabases().get(databaseName),
ruleConfigs);
+ MetaDataContexts changedMetaDataContexts =
buildChangedMetaDataContext(databaseName, ruleConfigs);
metaDataContexts.getOptimizerContext().getFederationMetaData().getDatabases().putAll(changedMetaDataContexts.getOptimizerContext().getFederationMetaData().getDatabases());
metaDataContexts.getMetaData().getDatabases().get(databaseName).getRuleMetaData().findRules(ResourceHeldRule.class).forEach(ResourceHeldRule::closeStaleResources);
metaDataContexts.getMetaData().getDatabases().putAll(changedMetaDataContexts.getMetaData().getDatabases());
@@ -277,10 +253,11 @@ public final class ContextManager implements
AutoCloseable {
}
}
- private MetaDataContexts buildChangedMetaDataContext(final
ShardingSphereDatabase originalDatabase, final Collection<RuleConfiguration>
ruleConfigs) throws SQLException {
+ private MetaDataContexts buildChangedMetaDataContext(final String
databaseName, final Collection<RuleConfiguration> ruleConfigs) throws
SQLException {
+ ShardingSphereDatabase toBeChangedDatabase =
metaDataContexts.getMetaData().getDatabases().get(databaseName);
ConfigurationProperties props =
metaDataContexts.getMetaData().getProps();
Map<String, ShardingSphereDatabase> databases =
ShardingSphereDatabasesFactory.create(
- Collections.singletonMap(originalDatabase.getName(), new
DataSourceProvidedDatabaseConfiguration(originalDatabase.getResource().getDataSources(),
ruleConfigs)),
+ Collections.singletonMap(databaseName, new
DataSourceProvidedDatabaseConfiguration(toBeChangedDatabase.getResource().getDataSources(),
ruleConfigs)),
props, instanceContext);
ShardingSphereRuleMetaData globalMetaData = new
ShardingSphereRuleMetaData(
GlobalRulesBuilder.buildRules(metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(),
databases, instanceContext));
@@ -518,6 +495,30 @@ public final class ContextManager implements AutoCloseable
{
return new
MetaDataContexts(metaDataContexts.getPersistService().orElse(null),
changedMetaData, metaDataContexts.getOptimizerContext());
}
+ private void refreshMetaDataContext(final String databaseName, final
Map<String, DataSourceProperties> dataSourcePropsMap) throws SQLException {
+ MetaDataContexts changedMetaDataContexts =
buildChangedMetaDataContextWithAddedDataSource(databaseName,
dataSourcePropsMap);
+
metaDataContexts.getMetaData().getDatabases().putAll(changedMetaDataContexts.getMetaData().getDatabases());
+
metaDataContexts.getOptimizerContext().getFederationMetaData().getDatabases().putAll(changedMetaDataContexts.getOptimizerContext().getFederationMetaData().getDatabases());
+
metaDataContexts.getOptimizerContext().getParserContexts().putAll(changedMetaDataContexts.getOptimizerContext().getParserContexts());
+
metaDataContexts.getOptimizerContext().getPlannerContexts().putAll(changedMetaDataContexts.getOptimizerContext().getPlannerContexts());
+
metaDataContexts.getMetaData().getGlobalRuleMetaData().findRules(ResourceHeldRule.class).forEach(each
->
each.addResource(metaDataContexts.getMetaData().getDatabases().get(databaseName)));
+ }
+
+ private MetaDataContexts
buildChangedMetaDataContextWithAddedDataSource(final String databaseName, final
Map<String, DataSourceProperties> addedDataSourceProps) throws SQLException {
+ ShardingSphereDatabase database =
metaDataContexts.getMetaData().getDatabases().get(databaseName);
+ Map<String, DataSource> dataSourceMap = new
HashMap<>(database.getResource().getDataSources());
+
dataSourceMap.putAll(DataSourcePoolCreator.create(addedDataSourceProps));
+ ConfigurationProperties props =
metaDataContexts.getMetaData().getProps();
+ DatabaseConfiguration databaseConfig = new
DataSourceProvidedDatabaseConfiguration(dataSourceMap,
database.getRuleMetaData().getConfigurations());
+ Map<String, ShardingSphereDatabase> databases =
ShardingSphereDatabasesFactory.create(Collections.singletonMap(database.getName(),
databaseConfig), props, instanceContext);
+ ShardingSphereRuleMetaData globalMetaData = new
ShardingSphereRuleMetaData(
+
GlobalRulesBuilder.buildRules(metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(),
databases, instanceContext));
+ ShardingSphereMetaData metaData = new
ShardingSphereMetaData(databases, globalMetaData, props);
+ MetaDataContexts result = new
MetaDataContexts(metaDataContexts.getPersistService().orElse(null), metaData,
OptimizerContextFactory.create(databases, globalMetaData));
+ persistMetaData(result);
+ return result;
+ }
+
private void refreshMetaDataContext(final String databaseName, final
MetaDataContexts changedMetaDataContexts, final Map<String,
DataSourceProperties> dataSourcePropsMap) {
metaDataContexts.getOptimizerContext().getFederationMetaData().getDatabases().putAll(changedMetaDataContexts.getOptimizerContext().getFederationMetaData().getDatabases());
Map<String, ShardingSphereDatabase> databases = new
HashMap<>(metaDataContexts.getMetaData().getDatabases());