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 580cdd6d19d Remove check missed single tables for
RegisterCenterMetaDataContextsInitFactory (#37960)
580cdd6d19d is described below
commit 580cdd6d19d46f75d235cdd73b09bc3e8b9e5209
Author: Haoran Meng <[email protected]>
AuthorDate: Thu Feb 5 13:27:44 2026 +0800
Remove check missed single tables for
RegisterCenterMetaDataContextsInitFactory (#37960)
---
.../RegisterCenterMetaDataContextsInitFactory.java | 61 ++--------------------
1 file changed, 5 insertions(+), 56 deletions(-)
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/RegisterCenterMetaDataContextsInitFactory.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/RegisterCenterMetaDataContextsInitFactory.java
index b8ca32fcd37..09136152cab 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/RegisterCenterMetaDataContextsInitFactory.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/RegisterCenterMetaDataContextsInitFactory.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.mode.metadata.factory.init.type;
import lombok.extern.slf4j.Slf4j;
-import
org.apache.shardingsphere.database.connector.core.metadata.database.system.SystemDatabase;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
import
org.apache.shardingsphere.infra.config.database.impl.DataSourceGeneratedDatabaseConfiguration;
@@ -28,13 +27,11 @@ import
org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigura
import
org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationPropertyKey;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.database.DatabaseTypeEngine;
-import org.apache.shardingsphere.infra.datanode.DataNode;
import
org.apache.shardingsphere.infra.datasource.pool.config.DataSourceConfiguration;
import
org.apache.shardingsphere.infra.datasource.pool.destroyer.DataSourcePoolDestroyer;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
import
org.apache.shardingsphere.infra.instance.metadata.jdbc.JDBCInstanceMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabaseFactory;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.mode.manager.builder.ContextManagerBuilderParameter;
@@ -44,16 +41,12 @@ import
org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistFacade;
import
org.apache.shardingsphere.mode.metadata.persist.config.global.PropertiesPersistService;
import
org.apache.shardingsphere.mode.metadata.persist.version.VersionPersistService;
import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
-import org.apache.shardingsphere.single.config.SingleRuleConfiguration;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
-import java.util.LinkedList;
import java.util.Map;
-import java.util.Optional;
import java.util.stream.Collectors;
/**
@@ -85,7 +78,7 @@ public final class RegisterCenterMetaDataContextsInitFactory
extends MetaDataCon
Map<String, DataSource> globalDataSources =
param.getGlobalDataSources();
ConfigurationProperties props = new
ConfigurationProperties(persistFacade.getPropsService().load());
DatabaseType protocolType =
DatabaseTypeEngine.getProtocolType(effectiveDatabaseConfigs, props);
- Map<String, Collection<ShardingSphereSchema>> schemas =
loadSchemas(effectiveDatabaseConfigs, protocolType, props,
isInstanceConnectionEnabled);
+ Map<String, Collection<ShardingSphereSchema>> schemas =
loadSchemas(effectiveDatabaseConfigs.keySet(), protocolType);
Collection<ShardingSphereDatabase> databases;
if (persistSchemasEnabled) {
// TODO merge schemas with local
@@ -128,58 +121,14 @@ public final class
RegisterCenterMetaDataContextsInitFactory extends MetaDataCon
}
}
- private Map<String, Collection<ShardingSphereSchema>> loadSchemas(final
Map<String, DatabaseConfiguration> effectiveDatabaseConfigs, final DatabaseType
protocolType,
- final
ConfigurationProperties props, final boolean isInstanceConnectionEnabled) {
- Collection<String> sysDatabaseNames = new
SystemDatabase(protocolType).getSystemDatabases();
- Collection<String> databaseNames = effectiveDatabaseConfigs.keySet();
+ private Map<String, Collection<ShardingSphereSchema>> loadSchemas(final
Collection<String> databaseNames, final DatabaseType protocolType) {
Map<String, Collection<ShardingSphereSchema>> result = new
HashMap<>(databaseNames.size());
- for (Map.Entry<String, DatabaseConfiguration> entry :
effectiveDatabaseConfigs.entrySet()) {
- String dbName = entry.getKey();
+ for (String dbName : databaseNames) {
Collection<ShardingSphereSchema> schemas =
persistFacade.getDatabaseMetaDataFacade().getSchema().load(dbName,
protocolType);
- if (sysDatabaseNames.contains(dbName)) {
- if (null != schemas) {
- result.put(dbName, schemas);
- }
- } else {
- Collection<String> missedSingleTables =
getMissedSingleTables(entry.getValue(), schemas, dbName);
- if (missedSingleTables.isEmpty()) {
- result.put(dbName, schemas);
- } else {
- log.info("Repository missed single tables: {} of database:
{}, start to reload", missedSingleTables, dbName);
- DataSourceGeneratedDatabaseConfiguration databaseConfig =
new
DataSourceGeneratedDatabaseConfiguration(persistFacade.loadDataSourceConfigurations(dbName),
- Collections.singleton(new
SingleRuleConfiguration(missedSingleTables, null)),
isInstanceConnectionEnabled);
- try {
- ShardingSphereDatabase database =
ShardingSphereDatabaseFactory.createWithoutSystemSchema(dbName, protocolType,
databaseConfig, props, instanceContext);
- database.getAllSchemas().forEach(schema ->
persistFacade.getDatabaseMetaDataFacade().getTable().persist(dbName,
schema.getName(), schema.getAllTables()));
- result.put(dbName,
persistFacade.getDatabaseMetaDataFacade().getSchema().load(dbName,
protocolType));
- } catch (final SQLException ex) {
- result.put(dbName, schemas);
- log.info("Reload reposotiry missed single tables: {}
of database : {} failed", missedSingleTables, dbName, ex);
- }
- }
+ if (schemas != null) {
+ result.put(dbName, schemas);
}
}
return result;
}
-
- private Collection<String> getMissedSingleTables(final
DatabaseConfiguration databaseConfiguration, final
Collection<ShardingSphereSchema> schemas,
- final String dbName) {
- Collection<String> result = new LinkedList<>();
- Optional<SingleRuleConfiguration> singleRuleConfig =
databaseConfiguration.getRuleConfigurations().stream().filter(each -> each
instanceof SingleRuleConfiguration)
- .map(each -> (SingleRuleConfiguration) each).findAny();
- singleRuleConfig.ifPresent(singleRuleConfiguration ->
singleRuleConfiguration.getTables().forEach(table -> {
- DataNode dataNode = new DataNode(table);
- String logicTableName = new DataNode(table).getTableName();
- String schemaName = null != dataNode.getSchemaName() ?
dataNode.getSchemaName() : dbName;
- Optional<ShardingSphereSchema> schema = findSchema(schemas,
schemaName);
- if (!schema.isPresent() ||
!schema.get().containsTable(logicTableName)) {
- result.add(table);
- }
- }));
- return result;
- }
-
- private Optional<ShardingSphereSchema> findSchema(final
Collection<ShardingSphereSchema> schemas, final String schemaName) {
- return schemas.stream().filter(each ->
each.getName().equals(schemaName)).findFirst();
- }
}