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 <[email protected]>
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);
+ }
}
}
}