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

zhangliang 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 09dfa247598 Refactor MetaDataContexts (#34355)
09dfa247598 is described below

commit 09dfa247598fff71b06766eb54235ed0f7b4b99c
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Jan 14 22:46:18 2025 +0800

    Refactor MetaDataContexts (#34355)
---
 .../mode/metadata/MetaDataContextManager.java      | 10 +++-----
 .../mode/metadata/MetaDataContexts.java            | 28 ++++++++++++----------
 .../manager/DatabaseRuleConfigurationManager.java  |  5 +---
 .../manager/GlobalConfigurationManager.java        | 14 ++++-------
 .../metadata/manager/SchemaMetaDataManager.java    |  4 +---
 .../mode/metadata/manager/StorageUnitManager.java  |  3 +--
 6 files changed, 27 insertions(+), 37 deletions(-)

diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
index 5e486c9e2c7..21ebc96d79a 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
@@ -100,8 +100,7 @@ public class MetaDataContextManager {
      * @param metaDataContexts meta data contexts
      */
     public void renewMetaDataContexts(final MetaDataContexts metaDataContexts) 
{
-        this.metaDataContexts.setMetaData(metaDataContexts.getMetaData());
-        this.metaDataContexts.setStatistics(metaDataContexts.getStatistics());
+        this.metaDataContexts.update(metaDataContexts);
     }
     
     /**
@@ -111,9 +110,7 @@ public class MetaDataContextManager {
      */
     public void forceRefreshDatabaseMetaData(final ShardingSphereDatabase 
database) {
         try {
-            MetaDataContexts reloadedMetaDataContexts = 
createMetaDataContexts(database);
-            
metaDataContexts.setMetaData(reloadedMetaDataContexts.getMetaData());
-            
metaDataContexts.setStatistics(reloadedMetaDataContexts.getStatistics());
+            metaDataContexts.update(createMetaDataContexts(database));
             
metaDataContexts.getMetaData().getDatabase(database.getName()).getAllSchemas()
                     .forEach(each -> {
                         if (each.isEmpty()) {
@@ -135,8 +132,7 @@ public class MetaDataContextManager {
         try {
             MetaDataContexts reloadedMetaDataContexts = 
createMetaDataContexts(database);
             dropSchemas(database.getName(), 
reloadedMetaDataContexts.getMetaData().getDatabase(database.getName()), 
database);
-            
metaDataContexts.setMetaData(reloadedMetaDataContexts.getMetaData());
-            
metaDataContexts.setStatistics(reloadedMetaDataContexts.getStatistics());
+            metaDataContexts.update(reloadedMetaDataContexts);
             
metaDataContexts.getMetaData().getDatabase(database.getName()).getAllSchemas()
                     .forEach(each -> 
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().alterByRefresh(database.getName(),
 each));
         } catch (final SQLException ex) {
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
index f885253ef99..40017d41e87 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.metadata;
 
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
+import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
 
 import javax.annotation.concurrent.ThreadSafe;
 import java.util.concurrent.atomic.AtomicReference;
@@ -48,29 +49,32 @@ public final class MetaDataContexts {
     }
     
     /**
-     * Set ShardingSphere meta data.
+     * Get ShardingSphere statistics.
      *
-     * @param metaData meta data
+     * @return got meta data statistics
      */
-    public void setMetaData(final ShardingSphereMetaData metaData) {
-        this.metaData.set(metaData);
+    public ShardingSphereStatistics getStatistics() {
+        return statistics.get();
     }
     
     /**
-     * Get ShardingSphere statistics.
+     * Update meta data contexts.
      *
-     * @return got meta data statistics
+     * @param newMetaDataContexts new meta data contexts
      */
-    public ShardingSphereStatistics getStatistics() {
-        return statistics.get();
+    public void update(final MetaDataContexts newMetaDataContexts) {
+        this.metaData.set(newMetaDataContexts.getMetaData());
+        this.statistics.set(newMetaDataContexts.getStatistics());
     }
     
     /**
-     * Set ShardingSphere statistics.
+     * Update meta data contexts.
      *
-     * @param statistics statistics
+     * @param metaData meta data
+     * @param metaDataPersistService meta data persist service
      */
-    public void setStatistics(final ShardingSphereStatistics statistics) {
-        this.statistics.set(statistics);
+    public void update(final ShardingSphereMetaData metaData, final 
MetaDataPersistService metaDataPersistService) {
+        this.metaData.set(metaData);
+        
this.statistics.set(ShardingSphereStatisticsFactory.create(metaDataPersistService,
 metaData));
     }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
index 20241cf0dd3..d8baeb451c6 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/DatabaseRuleConfigurationManager.java
@@ -102,10 +102,7 @@ public final class DatabaseRuleConfigurationManager {
     }
     
     private void refreshMetadata(final String databaseName, final 
Collection<RuleConfiguration> ruleConfigurations) throws SQLException {
-        MetaDataContexts reloadMetaDataContexts = 
MetaDataContextsFactory.createByAlterRule(databaseName, false,
-                ruleConfigurations, metaDataContexts, metaDataPersistService, 
computeNodeInstanceContext);
-        metaDataContexts.setMetaData(reloadMetaDataContexts.getMetaData());
-        metaDataContexts.setStatistics(reloadMetaDataContexts.getStatistics());
+        
metaDataContexts.update(MetaDataContextsFactory.createByAlterRule(databaseName, 
false, ruleConfigurations, metaDataContexts, metaDataPersistService, 
computeNodeInstanceContext));
     }
     
     private Collection<RuleConfiguration> getRuleConfigurations(final 
Collection<ShardingSphereRule> rules) {
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/GlobalConfigurationManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/GlobalConfigurationManager.java
index 08e8de88236..7cc69a5c10b 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/GlobalConfigurationManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/GlobalConfigurationManager.java
@@ -27,7 +27,6 @@ import 
org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.mode.metadata.ShardingSphereStatisticsFactory;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
 import 
org.apache.shardingsphere.mode.node.tuple.annotation.RepositoryTupleEntity;
 import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -68,10 +67,9 @@ public final class GlobalConfigurationManager {
         rules.addAll(GlobalRulesBuilder.buildSingleRules(ruleConfig, 
metaDataContexts.getMetaData().getAllDatabases(), 
metaDataContexts.getMetaData().getProps()));
         
metaDataContexts.getMetaData().getGlobalRuleMetaData().getRules().clear();
         
metaDataContexts.getMetaData().getGlobalRuleMetaData().getRules().addAll(rules);
-        ShardingSphereMetaData toBeChangedMetaData = new 
ShardingSphereMetaData(metaDataContexts.getMetaData().getAllDatabases(),
-                metaDataContexts.getMetaData().getGlobalResourceMetaData(), 
metaDataContexts.getMetaData().getGlobalRuleMetaData(), 
metaDataContexts.getMetaData().getProps());
-        metaDataContexts.setMetaData(toBeChangedMetaData);
-        
metaDataContexts.setStatistics(ShardingSphereStatisticsFactory.create(metaDataPersistService,
 toBeChangedMetaData));
+        metaDataContexts.update(new 
ShardingSphereMetaData(metaDataContexts.getMetaData().getAllDatabases(),
+                metaDataContexts.getMetaData().getGlobalResourceMetaData(), 
metaDataContexts.getMetaData().getGlobalRuleMetaData(), 
metaDataContexts.getMetaData().getProps()),
+                metaDataPersistService);
     }
     
     // Optimize string comparison rule type.
@@ -90,9 +88,7 @@ public final class GlobalConfigurationManager {
      * @param props properties to be altered
      */
     public synchronized void alterProperties(final Properties props) {
-        ShardingSphereMetaData toBeChangedMetaData = new 
ShardingSphereMetaData(metaDataContexts.getMetaData().getAllDatabases(),
-                metaDataContexts.getMetaData().getGlobalResourceMetaData(), 
metaDataContexts.getMetaData().getGlobalRuleMetaData(), new 
ConfigurationProperties(props));
-        metaDataContexts.setMetaData(toBeChangedMetaData);
-        
metaDataContexts.setStatistics(ShardingSphereStatisticsFactory.create(metaDataPersistService,
 toBeChangedMetaData));
+        metaDataContexts.update(new 
ShardingSphereMetaData(metaDataContexts.getMetaData().getAllDatabases(),
+                metaDataContexts.getMetaData().getGlobalResourceMetaData(), 
metaDataContexts.getMetaData().getGlobalRuleMetaData(), new 
ConfigurationProperties(props)), metaDataPersistService);
     }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManager.java
index 55259c61395..59d384f6f55 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/SchemaMetaDataManager.java
@@ -29,7 +29,6 @@ import 
org.apache.shardingsphere.infra.rule.attribute.datanode.MutableDataNodeRu
 import org.apache.shardingsphere.infra.rule.scope.GlobalRule;
 import 
org.apache.shardingsphere.infra.rule.scope.GlobalRule.GlobalRuleChangedType;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.mode.metadata.ShardingSphereStatisticsFactory;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
 import 
org.apache.shardingsphere.mode.metadata.refresher.util.TableRefreshUtils;
 import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -62,8 +61,7 @@ public final class SchemaMetaDataManager {
         }
         DatabaseType protocolType = 
DatabaseTypeEngine.getProtocolType(Collections.emptyMap(), 
metaDataContexts.getMetaData().getProps());
         metaDataContexts.getMetaData().addDatabase(databaseName, protocolType, 
metaDataContexts.getMetaData().getProps());
-        metaDataContexts.setMetaData(metaDataContexts.getMetaData());
-        
metaDataContexts.setStatistics(ShardingSphereStatisticsFactory.create(metaDataPersistService,
 metaDataContexts.getMetaData()));
+        metaDataContexts.update(metaDataContexts.getMetaData(), 
metaDataPersistService);
     }
     
     /**
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java
index 0631aaab6e4..9d2240a9e64 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/StorageUnitManager.java
@@ -109,8 +109,7 @@ public final class StorageUnitManager {
     private void buildNewMetaDataContext(final String databaseName, final 
SwitchingResource switchingResource) throws SQLException {
         MetaDataContexts reloadMetaDataContexts = 
MetaDataContextsFactory.createBySwitchResource(
                 databaseName, true, switchingResource, metaDataContexts, 
metaDataPersistService, computeNodeInstanceContext);
-        metaDataContexts.setMetaData(reloadMetaDataContexts.getMetaData());
-        metaDataContexts.setStatistics(reloadMetaDataContexts.getStatistics());
+        metaDataContexts.update(reloadMetaDataContexts);
         
metaDataContexts.getMetaData().putDatabase(buildDatabase(reloadMetaDataContexts.getMetaData().getDatabase(databaseName)));
         switchingResource.closeStaleDataSources();
     }

Reply via email to