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 7db630b2961 Refactor MetaDataManagerPersistService (#35026) 7db630b2961 is described below commit 7db630b2961ec56714d224faecefdbff50312a45 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Tue Mar 18 16:27:44 2025 +0800 Refactor MetaDataManagerPersistService (#35026) * Revise javadoc of LockDefinition * Refactor MetaDataManagerPersistService --- .../shardingsphere/infra/lock/LockDefinition.java | 2 +- .../database/type/AlterDatabaseRuleOperator.java | 3 +- .../database/type/CreateDatabaseRuleOperator.java | 3 +- .../database/type/DropDatabaseRuleOperator.java | 7 ++--- .../table/DropTablePushDownMetaDataRefresher.java | 3 +- .../service/MetaDataManagerPersistService.java | 16 ++++------- .../StandaloneMetaDataManagerPersistService.java | 33 +++++++++++++++------- 7 files changed, 35 insertions(+), 32 deletions(-) diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/lock/LockDefinition.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/lock/LockDefinition.java index e33eda1313b..c6fab673e7f 100644 --- a/infra/common/src/main/java/org/apache/shardingsphere/infra/lock/LockDefinition.java +++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/lock/LockDefinition.java @@ -25,7 +25,7 @@ public interface LockDefinition { /** * Get lock key. * - * @return lockKey + * @return lock key */ String getLockKey(); } diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java index 6429096f91d..0be350c4188 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java @@ -28,7 +28,6 @@ import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.mode.manager.ContextManager; import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; -import java.sql.SQLException; import java.util.LinkedHashMap; import java.util.Map.Entry; import java.util.stream.Collectors; @@ -46,7 +45,7 @@ public final class AlterDatabaseRuleOperator implements DatabaseRuleOperator { @Override @SuppressWarnings("unchecked") - public void operate(final DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase database, final RuleConfiguration currentRuleConfig) throws SQLException { + public void operate(final DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase database, final RuleConfiguration currentRuleConfig) { RuleConfiguration toBeAlteredRuleConfig = executor.buildToBeAlteredRuleConfiguration(sqlStatement); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModeFacade().getMetaDataManagerService(); metaDataManagerPersistService.alterRuleConfiguration(database, decorateRuleConfiguration(database, toBeAlteredRuleConfig)); diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java index 77bd59ef422..a10ce63f479 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java @@ -28,7 +28,6 @@ import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; import org.apache.shardingsphere.mode.manager.ContextManager; import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; -import java.sql.SQLException; import java.util.LinkedHashMap; import java.util.Map.Entry; import java.util.stream.Collectors; @@ -46,7 +45,7 @@ public final class CreateDatabaseRuleOperator implements DatabaseRuleOperator { @Override @SuppressWarnings("unchecked") - public void operate(final DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase database, final RuleConfiguration currentRuleConfig) throws SQLException { + public void operate(final DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase database, final RuleConfiguration currentRuleConfig) { RuleConfiguration toBeCreatedRuleConfig = executor.buildToBeCreatedRuleConfiguration(sqlStatement); MetaDataManagerPersistService metaDataManagerPersistService = contextManager.getPersistServiceFacade().getModeFacade().getMetaDataManagerService(); metaDataManagerPersistService.alterRuleConfiguration(database, decorateRuleConfiguration(database, toBeCreatedRuleConfig)); diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java index 31f2ef74dfd..4da4f19f1f6 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java @@ -23,18 +23,17 @@ import org.apache.shardingsphere.distsql.handler.engine.update.rdl.rule.spi.data import org.apache.shardingsphere.distsql.statement.rdl.rule.aware.StaticDataSourceContainedRuleAwareStatement; import org.apache.shardingsphere.distsql.statement.rdl.rule.database.DatabaseRuleDefinitionStatement; import org.apache.shardingsphere.infra.config.rule.RuleConfiguration; -import org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfiguration; import org.apache.shardingsphere.infra.config.rule.checker.DatabaseRuleConfigurationEmptyChecker; +import org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfiguration; import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase; import org.apache.shardingsphere.infra.rule.attribute.datasource.StaticDataSourceRuleAttribute; import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; 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.manager.ContextManager; -import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; import org.apache.shardingsphere.mode.node.rule.tuple.annotation.RuleNodeTupleEntity; +import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; -import java.sql.SQLException; import java.util.Objects; /** @@ -50,7 +49,7 @@ public final class DropDatabaseRuleOperator implements DatabaseRuleOperator { @Override @SuppressWarnings("unchecked") - public void operate(final DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase database, final RuleConfiguration currentRuleConfig) throws SQLException { + public void operate(final DatabaseRuleDefinitionStatement sqlStatement, final ShardingSphereDatabase database, final RuleConfiguration currentRuleConfig) { if (!executor.hasAnyOneToBeDropped(sqlStatement)) { return; } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java index 64e8b4ff0f2..0ad459b0f3b 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/DropTablePushDownMetaDataRefresher.java @@ -24,7 +24,6 @@ import org.apache.shardingsphere.mode.metadata.refresher.metadata.pushdown.PushD import org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService; import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.DropTableStatement; -import java.sql.SQLException; import java.util.Collection; import java.util.stream.Collectors; @@ -35,7 +34,7 @@ public final class DropTablePushDownMetaDataRefresher implements PushDownMetaDat @Override public void refresh(final MetaDataManagerPersistService metaDataManagerPersistService, final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames, - final String schemaName, final DatabaseType databaseType, final DropTableStatement sqlStatement, final ConfigurationProperties props) throws SQLException { + final String schemaName, final DatabaseType databaseType, final DropTableStatement sqlStatement, final ConfigurationProperties props) { Collection<String> tableNames = sqlStatement.getTables().stream().map(each -> each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()); metaDataManagerPersistService.dropTables(database, schemaName, tableNames); } diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java index 56b9cb4d8b5..d16e1c9d9d4 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java @@ -24,7 +24,6 @@ import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView; -import java.sql.SQLException; import java.util.Collection; import java.util.Map; import java.util.Properties; @@ -92,9 +91,8 @@ public interface MetaDataManagerPersistService { * @param database database * @param schemaName schema name * @param table table - * @throws SQLException SQL exception */ - void createTable(ShardingSphereDatabase database, String schemaName, ShardingSphereTable table) throws SQLException; + void createTable(ShardingSphereDatabase database, String schemaName, ShardingSphereTable table); /** * Drop tables. @@ -102,9 +100,8 @@ public interface MetaDataManagerPersistService { * @param database database * @param schemaName schema name * @param tableNames table names - * @throws SQLException SQL exception */ - void dropTables(ShardingSphereDatabase database, String schemaName, Collection<String> tableNames) throws SQLException; + void dropTables(ShardingSphereDatabase database, String schemaName, Collection<String> tableNames); /** * Register storage units. @@ -134,27 +131,24 @@ public interface MetaDataManagerPersistService { * * @param database database * @param ruleMetaData rule meta data - * @throws SQLException SQL exception */ - void alterSingleRuleConfiguration(ShardingSphereDatabase database, RuleMetaData ruleMetaData) throws SQLException; + void alterSingleRuleConfiguration(ShardingSphereDatabase database, RuleMetaData ruleMetaData); /** * Alter rule configuration. * * @param database database * @param toBeAlteredRuleConfig to be altered rule config - * @throws SQLException SQL exception */ - void alterRuleConfiguration(ShardingSphereDatabase database, RuleConfiguration toBeAlteredRuleConfig) throws SQLException; + void alterRuleConfiguration(ShardingSphereDatabase database, RuleConfiguration toBeAlteredRuleConfig); /** * Remove rule configuration item. * * @param database database * @param toBeRemovedRuleConfig to be removed rule config - * @throws SQLException SQL exception */ - void removeRuleConfigurationItem(ShardingSphereDatabase database, RuleConfiguration toBeRemovedRuleConfig) throws SQLException; + void removeRuleConfigurationItem(ShardingSphereDatabase database, RuleConfiguration toBeRemovedRuleConfig); /** * Remove rule configuration. diff --git a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java index 2c64be2c100..b124282bcac 100644 --- a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java +++ b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java @@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.manager.standalone.persist.service; import org.apache.shardingsphere.infra.config.rule.RuleConfiguration; import org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties; +import org.apache.shardingsphere.infra.exception.core.external.sql.type.wrapper.SQLWrapperException; import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData; import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase; import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData; @@ -122,7 +123,7 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa } @Override - public void createTable(final ShardingSphereDatabase database, final String schemaName, final ShardingSphereTable table) throws SQLException { + public void createTable(final ShardingSphereDatabase database, final String schemaName, final ShardingSphereTable table) { metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(database.getName(), schemaName, Collections.singleton(table)); metaDataContextManager.getDatabaseMetaDataManager().alterTable(database.getName(), schemaName, table); if (TableRefreshUtils.isSingleTable(table.getName(), database) && TableRefreshUtils.isNeedRefresh(database.getRuleMetaData(), schemaName, table.getName())) { @@ -131,7 +132,7 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa } @Override - public void dropTables(final ShardingSphereDatabase database, final String schemaName, final Collection<String> tableNames) throws SQLException { + public void dropTables(final ShardingSphereDatabase database, final String schemaName, final Collection<String> tableNames) { boolean isNeedRefresh = TableRefreshUtils.isNeedRefresh(database.getRuleMetaData(), schemaName, tableNames); tableNames.forEach(each -> { metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().drop(database.getName(), schemaName, each); @@ -192,15 +193,19 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa } @Override - public void alterSingleRuleConfiguration(final ShardingSphereDatabase database, final RuleMetaData ruleMetaData) throws SQLException { + public void alterSingleRuleConfiguration(final ShardingSphereDatabase database, final RuleMetaData ruleMetaData) { SingleRuleConfiguration singleRuleConfig = ruleMetaData.getSingleRule(SingleRule.class).getConfiguration(); metaDataPersistFacade.getDatabaseRuleService().persist(database.getName(), Collections.singleton(singleRuleConfig)); - metaDataContextManager.getDatabaseRuleConfigurationManager().refresh(database.getName(), singleRuleConfig, true); + try { + metaDataContextManager.getDatabaseRuleConfigurationManager().refresh(database.getName(), singleRuleConfig, true); + } catch (final SQLException ex) { + throw new SQLWrapperException(ex); + } OrderedServicesCache.clearCache(); } @Override - public void alterRuleConfiguration(final ShardingSphereDatabase database, final RuleConfiguration toBeAlteredRuleConfig) throws SQLException { + public void alterRuleConfiguration(final ShardingSphereDatabase database, final RuleConfiguration toBeAlteredRuleConfig) { if (null == toBeAlteredRuleConfig) { return; } @@ -213,19 +218,23 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa OrderedServicesCache.clearCache(); } - private void alterRuleItem(final String databaseName, final Collection<MetaDataVersion> metaDataVersions) throws SQLException { + private void alterRuleItem(final String databaseName, final Collection<MetaDataVersion> metaDataVersions) { RuleItemChangedNodePathBuilder ruleItemChangedNodePathBuilder = new RuleItemChangedNodePathBuilder(); ActiveVersionChecker activeVersionChecker = new ActiveVersionChecker(metaDataPersistFacade.getRepository()); for (MetaDataVersion each : metaDataVersions) { Optional<DatabaseRuleNodePath> databaseRuleNodePath = ruleItemChangedNodePathBuilder.build(databaseName, new VersionNodePath(each.getNodePath()).getActiveVersionPath()); if (databaseRuleNodePath.isPresent() && activeVersionChecker.checkSame(new VersionNodePath(databaseRuleNodePath.get()), each.getActiveVersion())) { - metaDataContextManager.getDatabaseRuleItemManager().alter(databaseRuleNodePath.get()); + try { + metaDataContextManager.getDatabaseRuleItemManager().alter(databaseRuleNodePath.get()); + } catch (final SQLException ex) { + throw new SQLWrapperException(ex); + } } } } @Override - public void removeRuleConfigurationItem(final ShardingSphereDatabase database, final RuleConfiguration toBeRemovedRuleConfig) throws SQLException { + public void removeRuleConfigurationItem(final ShardingSphereDatabase database, final RuleConfiguration toBeRemovedRuleConfig) { if (null == toBeRemovedRuleConfig) { return; } @@ -238,12 +247,16 @@ public final class StandaloneMetaDataManagerPersistService implements MetaDataMa OrderedServicesCache.clearCache(); } - private void removeRuleItem(final String databaseName, final Collection<MetaDataVersion> metaDataVersions) throws SQLException { + private void removeRuleItem(final String databaseName, final Collection<MetaDataVersion> metaDataVersions) { RuleItemChangedNodePathBuilder ruleItemChangedNodePathBuilder = new RuleItemChangedNodePathBuilder(); for (MetaDataVersion each : metaDataVersions) { Optional<DatabaseRuleNodePath> databaseRuleNodePath = ruleItemChangedNodePathBuilder.build(databaseName, new VersionNodePath(each.getNodePath()).getActiveVersionPath()); if (databaseRuleNodePath.isPresent()) { - metaDataContextManager.getDatabaseRuleItemManager().drop(databaseRuleNodePath.get()); + try { + metaDataContextManager.getDatabaseRuleItemManager().drop(databaseRuleNodePath.get()); + } catch (final SQLException ex) { + throw new SQLWrapperException(ex); + } } } }