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 82b44e45241 Move persist single table rule from refresher to persist 
service (#34814)
82b44e45241 is described below

commit 82b44e45241ca63f3a57f3feaa35b92709afa2cb
Author: Haoran Meng <menghaora...@gmail.com>
AuthorDate: Fri Feb 28 11:10:54 2025 +0800

    Move persist single table rule from refresher to persist service (#34814)
---
 .../pushdown/type/table/CreateTablePushDownMetaDataRefresher.java   | 6 +-----
 .../mode/persist/service/MetaDataManagerPersistService.java         | 3 ++-
 .../persist/service/ClusterMetaDataManagerPersistService.java       | 4 ++++
 .../persist/service/StandaloneMetaDataManagerPersistService.java    | 6 +++++-
 .../service/StandaloneMetaDataManagerPersistServiceTest.java        | 2 +-
 5 files changed, 13 insertions(+), 8 deletions(-)

diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java
index fd9ecf9e361..0ccf5e97feb 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/metadata/pushdown/type/table/CreateTablePushDownMetaDataRefresher.java
@@ -47,15 +47,11 @@ public final class CreateTablePushDownMetaDataRefresher 
implements PushDownMetaD
                         final String schemaName, final DatabaseType 
databaseType, final CreateTableStatement sqlStatement, final 
ConfigurationProperties props) throws SQLException {
         String tableName = 
TableRefreshUtils.getTableName(sqlStatement.getTable().getTableName().getIdentifier(),
 databaseType);
         RuleMetaData ruleMetaData = new RuleMetaData(new 
LinkedList<>(database.getRuleMetaData().getRules()));
-        boolean isSingleTable = TableRefreshUtils.isSingleTable(tableName, 
database);
-        if (isSingleTable) {
+        if (TableRefreshUtils.isSingleTable(tableName, database)) {
             
ruleMetaData.getAttributes(MutableDataNodeRuleAttribute.class).forEach(each -> 
each.put(logicDataSourceNames.iterator().next(), schemaName, tableName));
         }
         ShardingSphereTable loadedTable = loadTable(database, schemaName, 
tableName, ruleMetaData, props);
         metaDataManagerPersistService.createTable(database, schemaName, 
loadedTable);
-        if (isSingleTable && TableRefreshUtils.isNeedRefresh(ruleMetaData, 
schemaName, tableName)) {
-            
metaDataManagerPersistService.alterSingleRuleConfiguration(database, 
ruleMetaData);
-        }
     }
     
     private ShardingSphereTable loadTable(final ShardingSphereDatabase 
database, final String schemaName, final String tableName,
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 ad5c4213939..f726f087f9a 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
@@ -92,8 +92,9 @@ 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);
+    void createTable(ShardingSphereDatabase database, String schemaName, 
ShardingSphereTable table) throws SQLException;
     
     /**
      * Drop tables.
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
index 7d92f754e8d..d67288797e8 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
@@ -32,6 +32,7 @@ import 
org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistFacade;
 import 
org.apache.shardingsphere.mode.metadata.persist.metadata.DatabaseMetaDataPersistFacade;
+import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.util.TableRefreshUtils;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
 import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
 import org.apache.shardingsphere.single.config.SingleRuleConfiguration;
@@ -113,6 +114,9 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
     @Override
     public void createTable(final ShardingSphereDatabase database, final 
String schemaName, final ShardingSphereTable table) {
         
metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(database.getName(),
 schemaName, Collections.singleton(table));
+        if (TableRefreshUtils.isSingleTable(table.getName(), database) && 
TableRefreshUtils.isNeedRefresh(database.getRuleMetaData(), schemaName, 
table.getName())) {
+            alterSingleRuleConfiguration(database, database.getRuleMetaData());
+        }
     }
     
     @Override
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 d11b91aca76..476d6e11650 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
@@ -36,6 +36,7 @@ import 
org.apache.shardingsphere.mode.metadata.changed.executor.type.RuleItemDro
 import org.apache.shardingsphere.mode.metadata.manager.MetaDataContextManager;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistFacade;
 import 
org.apache.shardingsphere.mode.metadata.persist.metadata.DatabaseMetaDataPersistFacade;
+import 
org.apache.shardingsphere.mode.metadata.refresher.metadata.util.TableRefreshUtils;
 import 
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
 import org.apache.shardingsphere.mode.spi.rule.item.alter.AlterRuleItem;
 import org.apache.shardingsphere.mode.spi.rule.item.drop.DropRuleItem;
@@ -128,8 +129,11 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
     }
     
     @Override
-    public void createTable(final ShardingSphereDatabase database, final 
String schemaName, final ShardingSphereTable table) {
+    public void createTable(final ShardingSphereDatabase database, final 
String schemaName, final ShardingSphereTable table) throws SQLException {
         
metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(database.getName(),
 schemaName, Collections.singleton(table));
+        if (TableRefreshUtils.isSingleTable(table.getName(), database) && 
TableRefreshUtils.isNeedRefresh(database.getRuleMetaData(), schemaName, 
table.getName())) {
+            alterSingleRuleConfiguration(database, database.getRuleMetaData());
+        }
         
metaDataContextManager.getDatabaseMetaDataManager().alterTable(database.getName(),
 schemaName, table);
     }
     
diff --git 
a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java
 
b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java
index ae678672a95..e14d7b2a8ad 100644
--- 
a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java
+++ 
b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java
@@ -223,7 +223,7 @@ class StandaloneMetaDataManagerPersistServiceTest {
     }
     
     @Test
-    void assertCreateTable() {
+    void assertCreateTable() throws SQLException {
         ShardingSphereTable table = new ShardingSphereTable("foo_tbl", 
Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), 
TableType.TABLE);
         metaDataManagerPersistService.createTable(new 
ShardingSphereDatabase("foo_db", mock(), mock(), mock(), 
Collections.emptyList()), "foo_schema", table);
         
verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getTable()).persist("foo_db",
 "foo_schema", Collections.singleton(table));

Reply via email to