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();
}