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