This is an automated email from the ASF dual-hosted git repository.

zhaojinchao 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 fd810c09a72 Refactor ShardingSphereDataPersistService.persist (#32968)
fd810c09a72 is described below

commit fd810c09a72d2ffa80035558d21b2cba87d18ee2
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Sep 24 10:52:58 2024 +0800

    Refactor ShardingSphereDataPersistService.persist (#32968)
---
 .../persist/data/ShardingSphereDataPersistService.java   | 16 +++++++---------
 .../data/ShardingSphereDataPersistServiceTest.java       |  7 +++++--
 .../mode/metadata/MetaDataContextsFactory.java           |  8 ++++++--
 .../persist/ClusterMetaDataManagerPersistService.java    |  5 ++---
 4 files changed, 20 insertions(+), 16 deletions(-)

diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistService.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistService.java
index ca3f0a80705..cf8656acb75 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistService.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistService.java
@@ -31,7 +31,6 @@ import org.apache.shardingsphere.mode.spi.PersistRepository;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
@@ -87,27 +86,26 @@ public final class ShardingSphereDataPersistService {
     /**
      * Persist.
      *
-     * @param databaseName database name
+     * @param database database
      * @param schemaName schema name
      * @param schemaData schema data
-     * @param databases databases
      */
-    public void persist(final String databaseName, final String schemaName, 
final ShardingSphereSchemaData schemaData, final Map<String, 
ShardingSphereDatabase> databases) {
+    public void persist(final ShardingSphereDatabase database, final String 
schemaName, final ShardingSphereSchemaData schemaData) {
         if (schemaData.getTableData().isEmpty()) {
-            persistSchema(databaseName, schemaName);
+            persistSchema(database.getName(), schemaName);
         }
-        persistTableData(databaseName, schemaName, schemaData, databases);
+        persistTableData(database, schemaName, schemaData);
     }
     
     private void persistSchema(final String databaseName, final String 
schemaName) {
         
repository.persist(ShardingSphereDataNode.getSchemaDataPath(databaseName, 
schemaName), "");
     }
     
-    private void persistTableData(final String databaseName, final String 
schemaName, final ShardingSphereSchemaData schemaData, final Map<String, 
ShardingSphereDatabase> databases) {
+    private void persistTableData(final ShardingSphereDatabase database, final 
String schemaName, final ShardingSphereSchemaData schemaData) {
         schemaData.getTableData().values().forEach(each -> {
             YamlShardingSphereRowDataSwapper swapper =
-                    new YamlShardingSphereRowDataSwapper(new 
ArrayList<>(databases.get(databaseName.toLowerCase()).getSchema(schemaName).getTable(each.getName()).getColumnValues()));
-            persistTableData(databaseName, schemaName, each.getName(), 
each.getRows().stream().map(swapper::swapToYamlConfiguration).collect(Collectors.toList()));
+                    new YamlShardingSphereRowDataSwapper(new 
ArrayList<>(database.getSchema(schemaName).getTable(each.getName()).getColumnValues()));
+            persistTableData(database.getName(), schemaName, each.getName(), 
each.getRows().stream().map(swapper::swapToYamlConfiguration).collect(Collectors.toList()));
         });
     }
     
diff --git 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistServiceTest.java
 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistServiceTest.java
index a46dcc88091..9eac70d8d2b 100644
--- 
a/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistServiceTest.java
+++ 
b/kernel/metadata/core/src/test/java/org/apache/shardingsphere/metadata/persist/data/ShardingSphereDataPersistServiceTest.java
@@ -86,7 +86,9 @@ class ShardingSphereDataPersistServiceTest {
     
     @Test
     void assertPersistWithEmptyTableData() {
-        persistService.persist("foo_db", "foo_schema", 
mock(ShardingSphereSchemaData.class), Collections.singletonMap("foo_db", 
mock(ShardingSphereDatabase.class)));
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+        when(database.getName()).thenReturn("foo_db");
+        persistService.persist(database, "foo_schema", 
mock(ShardingSphereSchemaData.class));
         
verify(repository).persist("/statistics/databases/foo_db/schemas/foo_schema", 
"");
     }
     
@@ -98,8 +100,9 @@ class ShardingSphereDataPersistServiceTest {
         when(tableData.getName()).thenReturn("foo_tbl");
         
when(schemaData.getTableData().values()).thenReturn(Collections.singleton(tableData));
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
+        when(database.getName()).thenReturn("foo_db");
         
when(database.getSchema("foo_schema").getTable("foo_tbl").getColumnValues()).thenReturn(Collections.singleton(mock(ShardingSphereColumn.class)));
-        persistService.persist("foo_db", "foo_schema", schemaData, 
Collections.singletonMap("foo_db", database));
+        persistService.persist(database, "foo_schema", schemaData);
         verify(tableRowDataPersistService).persist("foo_db", "foo_schema", 
"foo_tbl", Collections.emptyList());
     }
     
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
index a851a48d4ad..907f4ba5c03 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
@@ -242,8 +242,12 @@ public final class MetaDataContextsFactory {
             }
             
persistService.getDatabaseMetaDataService().getTableMetaDataPersistService().persist(each.getName(),
 schemaName, schema.getTables());
         }));
-        
metaDataContexts.getStatistics().getDatabaseData().forEach((databaseName, 
databaseData) -> databaseData.getSchemaData().forEach((schemaName, schemaData) 
-> persistService
-                .getShardingSphereDataPersistService().persist(databaseName, 
schemaName, schemaData, metaDataContexts.getMetaData().getDatabases())));
+        for (Entry<String, ShardingSphereDatabaseData> databaseDataEntry : 
metaDataContexts.getStatistics().getDatabaseData().entrySet()) {
+            for (Entry<String, ShardingSphereSchemaData> schemaDataEntry : 
databaseDataEntry.getValue().getSchemaData().entrySet()) {
+                persistService.getShardingSphereDataPersistService().persist(
+                        
metaDataContexts.getMetaData().getDatabases().get(databaseDataEntry.getKey().toLowerCase()),
 schemaDataEntry.getKey(), schemaDataEntry.getValue());
+            }
+        }
     }
     
     /**
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
index f7ba803f8c9..f2f42c3fae9 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
@@ -164,10 +164,9 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
     private void afterStorageUnitsAltered(final String databaseName, final 
MetaDataContexts originalMetaDataContexts, final MetaDataContexts 
reloadMetaDataContexts) {
         
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
 schema) -> metaDataPersistService.getDatabaseMetaDataService()
                 
.persistByAlterConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
 schemaName, schema));
-        // TODO confirm
         
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
                 .ifPresent(optional -> 
optional.getSchemaData().forEach((schemaName, schemaData) -> 
metaDataPersistService.getShardingSphereDataPersistService()
-                        .persist(databaseName, schemaName, schemaData, 
originalMetaDataContexts.getMetaData().getDatabases())));
+                        
.persist(originalMetaDataContexts.getMetaData().getDatabases().get(databaseName.toLowerCase()),
 schemaName, schemaData)));
         metaDataPersistService.persistReloadDatabaseByAlter(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
                 
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
     }
@@ -177,7 +176,7 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
                 
.persistByDropConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
 schemaName, schema));
         
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
                 .ifPresent(optional -> 
optional.getSchemaData().forEach((schemaName, schemaData) -> 
metaDataPersistService.getShardingSphereDataPersistService()
-                        .persist(databaseName, schemaName, schemaData, 
originalMetaDataContexts.getMetaData().getDatabases())));
+                        
.persist(originalMetaDataContexts.getMetaData().getDatabases().get(databaseName.toLowerCase()),
 schemaName, schemaData)));
         metaDataPersistService.persistReloadDatabaseByDrop(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
                 
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
     }

Reply via email to