This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 6c4526edc3a Refactor ContextManager (#28202)
6c4526edc3a is described below
commit 6c4526edc3aa99e0501f0f7c9e167f81e258019a
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Aug 21 18:37:15 2023 +0800
Refactor ContextManager (#28202)
---
.../mode/manager/ContextManager.java | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index d502ee0580f..6be5893c1ca 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -27,6 +27,7 @@ import
org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageUnit;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.metadata.database.schema.SchemaManager;
import
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilder;
@@ -198,9 +199,11 @@ public final class ContextManager implements AutoCloseable
{
* @param tableName to be reloaded table name
*/
public void reloadTable(final String databaseName, final String
schemaName, final String tableName) {
- Map<String, DataSource> dataSourceMap =
metaDataContexts.get().getMetaData().getDatabase(databaseName).getResourceMetaData().getStorageUnitMetaData().getDataSources();
+ ShardingSphereDatabase database =
metaDataContexts.get().getMetaData().getDatabase(databaseName);
+ GenericSchemaBuilderMaterial material = new
GenericSchemaBuilderMaterial(database.getProtocolType(),
+ database.getResourceMetaData().getStorageUnitMetaData(),
database.getRuleMetaData().getRules(),
metaDataContexts.get().getMetaData().getProps(), schemaName);
try {
- reloadTable(databaseName, schemaName, tableName, dataSourceMap);
+ persistTable(database, schemaName, tableName, material);
} catch (final SQLException ex) {
log.error("Reload table: {} meta data of database: {} schema: {}
failed", tableName, databaseName, schemaName, ex);
}
@@ -215,20 +218,19 @@ public final class ContextManager implements
AutoCloseable {
* @param tableName to be reloaded table name
*/
public void reloadTable(final String databaseName, final String
schemaName, final String dataSourceName, final String tableName) {
- Map<String, DataSource> dataSourceMap = Collections.singletonMap(
- dataSourceName,
metaDataContexts.get().getMetaData().getDatabase(databaseName).getResourceMetaData().getStorageUnitMetaData().getStorageUnits().get(dataSourceName).getDataSource());
+ ShardingSphereDatabase database =
metaDataContexts.get().getMetaData().getDatabase(databaseName);
+ StorageUnit storageUnit =
database.getResourceMetaData().getStorageUnitMetaData().getStorageUnits().get(dataSourceName);
+ GenericSchemaBuilderMaterial material = new
GenericSchemaBuilderMaterial(database.getProtocolType(),
Collections.singletonMap(dataSourceName, storageUnit.getStorageType()),
+ Collections.singletonMap(dataSourceName,
storageUnit.getDataSource()), database.getRuleMetaData().getRules(),
metaDataContexts.get().getMetaData().getProps(), schemaName);
try {
- reloadTable(databaseName, schemaName, tableName, dataSourceMap);
+ persistTable(database, schemaName, tableName, material);
} catch (final SQLException ex) {
log.error("Reload table: {} meta data of database: {} schema: {}
with data source: {} failed", tableName, databaseName, schemaName,
dataSourceName, ex);
}
}
- private void reloadTable(final String databaseName, final String
schemaName, final String tableName, final Map<String, DataSource>
dataSourceMap) throws SQLException {
- ShardingSphereDatabase database =
metaDataContexts.get().getMetaData().getDatabase(databaseName);
- GenericSchemaBuilderMaterial material = new
GenericSchemaBuilderMaterial(database.getProtocolType(),
database.getResourceMetaData().getStorageUnitMetaData().getStorageTypes(),
- dataSourceMap, database.getRuleMetaData().getRules(),
metaDataContexts.get().getMetaData().getProps(), schemaName);
- ShardingSphereSchema schema =
GenericSchemaBuilder.build(Collections.singletonList(tableName),
material).getOrDefault(schemaName, new ShardingSphereSchema());
+ private void persistTable(final ShardingSphereDatabase database, final
String schemaName, final String tableName, final GenericSchemaBuilderMaterial
material) throws SQLException {
+ ShardingSphereSchema schema =
GenericSchemaBuilder.build(Collections.singleton(tableName),
material).getOrDefault(schemaName, new ShardingSphereSchema());
metaDataContexts.get().getPersistService().getDatabaseMetaDataService().getTableMetaDataPersistService()
.persist(database.getName(), schemaName,
Collections.singletonMap(tableName, schema.getTable(tableName)));
}