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

Reply via email to