This is an automated email from the ASF dual-hosted git repository.

menghaoran 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 069d923a565 Fix checkstyle for ContextManager (#18810)
069d923a565 is described below

commit 069d923a5650f6bb78bf058e5f854638dcf86752
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Jul 3 21:08:48 2022 +0800

    Fix checkstyle for ContextManager (#18810)
---
 .../mode/manager/ContextManager.java               | 46 +++++++++++-----------
 1 file changed, 22 insertions(+), 24 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 8e09426e118..09d32f63d58 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
@@ -242,29 +242,27 @@ public final class ContextManager implements 
AutoCloseable {
      * @param databaseName database name
      * @param ruleConfigs rule configurations
      */
+    @SuppressWarnings("rawtypes")
     public void alterRuleConfiguration(final String databaseName, final 
Collection<RuleConfiguration> ruleConfigs) {
         try {
-            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());
+            Collection<ResourceHeldRule> staleResourceHeldRules = 
metaDataContexts.getMetaData().getDatabases().get(databaseName).getRuleMetaData().findRules(ResourceHeldRule.class);
+            metaDataContexts = 
createMetaDataContextsWithAlteredDatabaseRules(databaseName, ruleConfigs);
+            persistMetaData(metaDataContexts);
+            
staleResourceHeldRules.forEach(ResourceHeldRule::closeStaleResources);
         } catch (final SQLException ex) {
-            log.error("Alter database:{} rule configuration failed", 
databaseName, ex);
+            log.error("Alter database: {} rule configurations failed", 
databaseName, ex);
         }
     }
     
-    private MetaDataContexts buildChangedMetaDataContext(final String 
databaseName, final Collection<RuleConfiguration> ruleConfigs) throws 
SQLException {
+    private MetaDataContexts 
createMetaDataContextsWithAlteredDatabaseRules(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(databaseName, new 
DataSourceProvidedDatabaseConfiguration(toBeChangedDatabase.getResource().getDataSources(),
 ruleConfigs)),
-                props, instanceContext);
+                Collections.singletonMap(databaseName, new 
DataSourceProvidedDatabaseConfiguration(toBeChangedDatabase.getResource().getDataSources(),
 ruleConfigs)), 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;
+        return new 
MetaDataContexts(metaDataContexts.getPersistService().orElse(null), metaData, 
OptimizerContextFactory.create(databases, globalMetaData));
     }
     
     /**
@@ -504,6 +502,19 @@ public final class ContextManager implements AutoCloseable 
{
         
metaDataContexts.getMetaData().getGlobalRuleMetaData().findRules(ResourceHeldRule.class).forEach(each
 -> 
each.addResource(metaDataContexts.getMetaData().getDatabases().get(databaseName)));
     }
     
+    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());
+        databases.putAll(changedMetaDataContexts.getMetaData().getDatabases());
+        final Collection<DataSource> pendingClosedDataSources = 
getPendingClosedDataSources(databaseName, dataSourcePropsMap);
+        MetaDataContexts newMetaDataContexts = rebuildMetaDataContexts(
+                new ShardingSphereMetaData(databases, 
metaDataContexts.getMetaData().getGlobalRuleMetaData(), 
metaDataContexts.getMetaData().getProps()));
+        
metaDataContexts.getMetaData().getGlobalRuleMetaData().findRules(ResourceHeldRule.class).forEach(ResourceHeldRule::closeStaleResources);
+        
metaDataContexts.getMetaData().getDatabases().get(databaseName).getRuleMetaData().findRules(ResourceHeldRule.class).forEach(ResourceHeldRule::closeStaleResources);
+        renewMetaDataContexts(newMetaDataContexts);
+        
pendingClosedDataSources.forEach(metaDataContexts.getMetaData().getDatabases().get(databaseName).getResource()::close);
+    }
+    
     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());
@@ -519,19 +530,6 @@ public final class ContextManager implements AutoCloseable 
{
         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());
-        databases.putAll(changedMetaDataContexts.getMetaData().getDatabases());
-        final Collection<DataSource> pendingClosedDataSources = 
getPendingClosedDataSources(databaseName, dataSourcePropsMap);
-        MetaDataContexts newMetaDataContexts = rebuildMetaDataContexts(
-                new ShardingSphereMetaData(databases, 
metaDataContexts.getMetaData().getGlobalRuleMetaData(), 
metaDataContexts.getMetaData().getProps()));
-        
metaDataContexts.getMetaData().getGlobalRuleMetaData().findRules(ResourceHeldRule.class).forEach(ResourceHeldRule::closeStaleResources);
-        
metaDataContexts.getMetaData().getDatabases().get(databaseName).getRuleMetaData().findRules(ResourceHeldRule.class).forEach(ResourceHeldRule::closeStaleResources);
-        renewMetaDataContexts(newMetaDataContexts);
-        
pendingClosedDataSources.forEach(metaDataContexts.getMetaData().getDatabases().get(databaseName).getResource()::close);
-    }
-    
     private MetaDataContexts 
buildChangedMetaDataContextWithChangedDataSource(final ShardingSphereDatabase 
originalDatabase,
                                                                               
final Map<String, DataSourceProperties> newDataSourceProps) throws SQLException 
{
         Collection<String> deletedDataSources = 
getDeletedDataSources(originalDatabase, newDataSourceProps).keySet();

Reply via email to