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 7113be2578b Refactor DatabaseMetaDataPersistFacade (#36834)
7113be2578b is described below
commit 7113be2578bed2fc6327fdffceaacc085eeaed20
Author: Haoran Meng <[email protected]>
AuthorDate: Fri Oct 10 11:19:48 2025 +0800
Refactor DatabaseMetaDataPersistFacade (#36834)
---
.../metadata/DatabaseMetaDataPersistFacade.java | 22 +++------------
.../service/SchemaMetaDataPersistService.java | 24 ----------------
.../DatabaseMetaDataPersistFacadeTest.java | 8 ++----
.../service/SchemaMetaDataPersistServiceTest.java | 33 ----------------------
.../ClusterMetaDataManagerPersistService.java | 6 ++--
.../StandaloneMetaDataManagerPersistService.java | 6 ++--
...tandaloneMetaDataManagerPersistServiceTest.java | 2 +-
7 files changed, 14 insertions(+), 87 deletions(-)
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
index e382a7352c9..32dc4fceb03 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacade.java
@@ -69,31 +69,17 @@ public final class DatabaseMetaDataPersistFacade {
}
/**
- * Persist reload meta data by alter.
+ * Persist reload meta data.
*
* @param databaseName database name
* @param reloadDatabase reload database
* @param currentDatabase current database
*/
- public void persistReloadDatabaseByAlter(final String databaseName, final
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase) {
+ public void persistReloadDatabase(final String databaseName, final
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase) {
Collection<ShardingSphereSchema> toBeAlteredSchemasWithTablesDropped =
GenericSchemaManager.getToBeAlteredSchemasWithTablesDropped(reloadDatabase,
currentDatabase);
Collection<ShardingSphereSchema> toBeAlteredSchemasWithTablesAdded =
GenericSchemaManager.getToBeAlteredSchemasWithTablesAdded(reloadDatabase,
currentDatabase);
- toBeAlteredSchemasWithTablesAdded.forEach(each ->
schema.alterByRuleAltered(databaseName, each));
- toBeAlteredSchemasWithTablesDropped.forEach(each ->
table.drop(databaseName, each.getName(), each.getAllTables()));
- }
-
- /**
- * Persist reload meta data by drop.
- *
- * @param databaseName database name
- * @param reloadDatabase reload database
- * @param currentDatabase current database
- */
- public void persistReloadDatabaseByDrop(final String databaseName, final
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase) {
- Collection<ShardingSphereSchema> toBeAlteredSchemasWithTablesDropped =
GenericSchemaManager.getToBeAlteredSchemasWithTablesDropped(reloadDatabase,
currentDatabase);
- Collection<ShardingSphereSchema> toBeAlteredSchemasWithTablesAdded =
GenericSchemaManager.getToBeAlteredSchemasWithTablesAdded(reloadDatabase,
currentDatabase);
- toBeAlteredSchemasWithTablesAdded.forEach(each ->
schema.alterByRuleDropped(databaseName, each));
- toBeAlteredSchemasWithTablesDropped.forEach(each ->
table.drop(databaseName, each.getName(), each.getAllTables()));
+ toBeAlteredSchemasWithTablesAdded.forEach(each ->
table.persist(databaseName, each.getName().toLowerCase(), each.getAllTables()));
+ toBeAlteredSchemasWithTablesDropped.forEach(each ->
table.drop(databaseName, each.getName().toLowerCase(), each.getAllTables()));
}
/**
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistService.java
index 8754adeff4a..ba57cd950d9 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistService.java
@@ -78,30 +78,6 @@ public final class SchemaMetaDataPersistService {
GenericSchemaManager.getToBeDroppedTables(schema,
currentSchema).forEach(each -> tableMetaDataPersistService.drop(databaseName,
schemaName, each.getName()));
}
- /**
- * Alter schema by rule altered.
- *
- * @param databaseName database name
- * @param schema to be altered schema
- */
- public void alterByRuleAltered(final String databaseName, final
ShardingSphereSchema schema) {
- String schemaName = schema.getName().toLowerCase();
- if (schema.isEmpty()) {
- add(databaseName, schemaName);
- }
- tableMetaDataPersistService.persist(databaseName, schemaName,
schema.getAllTables());
- }
-
- /**
- * Alter schema by rule dropped.
- *
- * @param databaseName database name
- * @param schema to be altered schema
- */
- public void alterByRuleDropped(final String databaseName, final
ShardingSphereSchema schema) {
- tableMetaDataPersistService.persist(databaseName, schema.getName(),
schema.getAllTables());
- }
-
/**
* Load schemas.
*
diff --git
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacadeTest.java
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacadeTest.java
index 1a4e828f020..dd1fa517e99 100644
---
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacadeTest.java
+++
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/DatabaseMetaDataPersistFacadeTest.java
@@ -65,13 +65,12 @@ class DatabaseMetaDataPersistFacadeTest {
}
@Test
- void assertPersistReloadDatabaseByAlter() {
+ void assertPersistReloadDatabase() {
ShardingSphereSchema toBeDeletedSchema = new
ShardingSphereSchema("to_be_deleted");
ShardingSphereSchema toBeAddedSchema = new
ShardingSphereSchema("to_be_added");
when(GenericSchemaManager.getToBeAlteredSchemasWithTablesDropped(any(),
any())).thenReturn(Collections.singleton(toBeDeletedSchema));
when(GenericSchemaManager.getToBeAlteredSchemasWithTablesAdded(any(),
any())).thenReturn(Collections.singleton(toBeAddedSchema));
- databaseMetaDataFacade.persistReloadDatabaseByAlter("foo_db",
mock(ShardingSphereDatabase.class), mock(ShardingSphereDatabase.class));
- verify(schemaMetaDataService).alterByRuleAltered("foo_db",
toBeAddedSchema);
+ databaseMetaDataFacade.persistReloadDatabase("foo_db",
mock(ShardingSphereDatabase.class), mock(ShardingSphereDatabase.class));
verify(tableMetaDataService).drop(eq("foo_db"), eq("to_be_deleted"),
anyCollection());
}
@@ -81,8 +80,7 @@ class DatabaseMetaDataPersistFacadeTest {
ShardingSphereSchema toBeAlterSchema = new
ShardingSphereSchema("to_be_altered");
when(GenericSchemaManager.getToBeAlteredSchemasWithTablesDropped(any(),
any())).thenReturn(Collections.singleton(toBeDeletedSchema));
when(GenericSchemaManager.getToBeAlteredSchemasWithTablesAdded(any(),
any())).thenReturn(Collections.singleton(toBeAlterSchema));
- databaseMetaDataFacade.persistReloadDatabaseByDrop("foo_db",
mock(ShardingSphereDatabase.class), mock(ShardingSphereDatabase.class));
- verify(schemaMetaDataService).alterByRuleDropped("foo_db",
toBeAlterSchema);
+ databaseMetaDataFacade.persistReloadDatabase("foo_db",
mock(ShardingSphereDatabase.class), mock(ShardingSphereDatabase.class));
verify(tableMetaDataService).drop(eq("foo_db"), eq("to_be_deleted"),
anyCollection());
}
}
diff --git
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistServiceTest.java
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistServiceTest.java
index 2fcdf4c9a26..3986a7cd151 100644
---
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistServiceTest.java
+++
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/metadata/service/SchemaMetaDataPersistServiceTest.java
@@ -32,8 +32,6 @@ import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.ArgumentMatchers.anyCollection;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -109,35 +107,4 @@ class SchemaMetaDataPersistServiceTest {
assertThat(actual.iterator().next().getTable("foo_tbl"), is(table));
assertThat(actual.iterator().next().getView("foo_view"), is(view));
}
-
- @Test
- void assertAlterSchemaByAlterConfigurationByRefresh() {
- persistService.alterByRuleAltered("foo_db", new
ShardingSphereSchema("foo_schema"));
-
verify(repository).persist("/metadata/foo_db/schemas/foo_schema/tables", "");
- verify(tableMetaDataPersistService).persist(eq("foo_db"),
eq("foo_schema"), anyCollection());
- }
-
- @Test
- void assertAlterSchemaByAlterConfigurationWithNotEmptyTablesByRefresh() {
- ShardingSphereTable table = mock(ShardingSphereTable.class);
- when(table.getName()).thenReturn("foo_tbl");
- persistService.alterByRuleAltered("foo_db", new
ShardingSphereSchema("foo_schema", Collections.singletonList(table),
Collections.emptyList()));
- verify(repository,
times(0)).persist("/metadata/foo_db/schemas/foo_schema/tables", "");
- verify(tableMetaDataPersistService).persist(eq("foo_db"),
eq("foo_schema"), anyCollection());
- }
-
- @Test
- void assertAlterSchemaByAlterConfigurationWithNotEmptyViewsByRefresh() {
- ShardingSphereView view = mock(ShardingSphereView.class);
- when(view.getName()).thenReturn("foo_view");
- persistService.alterByRuleAltered("foo_db", new
ShardingSphereSchema("foo_schema", Collections.emptyList(),
Collections.singleton(view)));
- verify(repository,
times(0)).persist("/metadata/foo_db/schemas/foo_schema/tables", "");
- verify(tableMetaDataPersistService).persist(eq("foo_db"),
eq("foo_schema"), anyCollection());
- }
-
- @Test
- void assertAlterByRefreshByDropConfiguration() {
- persistService.alterByRuleDropped("foo_db", new
ShardingSphereSchema("foo_schema"));
- verify(tableMetaDataPersistService).persist(eq("foo_db"),
eq("foo_schema"), anyCollection());
- }
}
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 191bdfd9992..b85ef469349 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
@@ -150,7 +150,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseStatistics(databaseName))
.ifPresent(optional ->
optional.getSchemaStatisticsMap().forEach((schemaName, schemaStatistics) ->
metaDataPersistFacade.getStatisticsService()
.persist(originalMetaDataContexts.getMetaData().getDatabase(databaseName),
schemaName, schemaStatistics)));
-
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabaseByAlter(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabase(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
}
@@ -161,7 +161,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
MetaDataContexts originalMetaDataContexts = new
MetaDataContexts(metaDataContextManager.getMetaDataContexts().getMetaData(),
metaDataContextManager.getMetaDataContexts().getStatistics());
metaDataPersistFacade.getDataSourceUnitService().delete(database.getName(),
each);
MetaDataContexts reloadMetaDataContexts =
getReloadedMetaDataContexts(originalMetaDataContexts);
-
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabaseByDrop(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabase(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
DatabaseStatistics databaseStatistics =
reloadMetaDataContexts.getStatistics().getDatabaseStatistics(database.getName());
if (null != databaseStatistics) {
@@ -191,7 +191,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
MetaDataContexts originalMetaDataContexts = new
MetaDataContexts(metaDataContextManager.getMetaDataContexts().getMetaData(),
metaDataContextManager.getMetaDataContexts().getStatistics());
metaDataPersistFacade.getDatabaseRuleService().persist(database.getName(),
Collections.singleton(toBeAlteredRuleConfig));
MetaDataContexts reloadMetaDataContexts =
getReloadedMetaDataContexts(originalMetaDataContexts);
-
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabaseByAlter(
+
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabase(
database.getName(),
reloadMetaDataContexts.getMetaData().getDatabase(database.getName()),
originalMetaDataContexts.getMetaData().getDatabase(database.getName()));
}
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 b956e826b8b..6e56b85e5f0 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
@@ -71,7 +71,7 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
MetaDataContexts originalMetaDataContexts = new
MetaDataContexts(metaDataContextManager.getMetaDataContexts().getMetaData(),
metaDataContextManager.getMetaDataContexts().getStatistics());
metaDataPersistFacade.getDatabaseMetaDataFacade().getDatabase().add(databaseName);
metaDataContextManager.getDatabaseMetaDataManager().addDatabase(databaseName);
-
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabaseByAlter(databaseName,
metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName),
+
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabase(databaseName,
metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName),
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
OrderedServicesCache.clearCache();
}
@@ -163,7 +163,7 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
private void afterStorageUnitsRegistered(final String databaseName, final
MetaDataContexts originalMetaDataContexts,
final Map<String,
DataSourcePoolProperties> toBeRegisteredProps) {
metaDataContextManager.getStorageUnitManager().register(databaseName,
toBeRegisteredProps);
-
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabaseByAlter(databaseName,
metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName),
+
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabase(databaseName,
metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName),
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
metaDataContextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules()
.forEach(each -> ((GlobalRule)
each).refresh(metaDataContextManager.getMetaDataContexts().getMetaData().getAllDatabases(),
GlobalRuleChangedType.DATABASE_CHANGED));
@@ -179,7 +179,7 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
private void afterStorageUnitsAltered(final String databaseName, final
MetaDataContexts originalMetaDataContexts, final Map<String,
DataSourcePoolProperties> toBeRegisteredProps) {
metaDataContextManager.getStorageUnitManager().alter(databaseName,
toBeRegisteredProps);
-
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabaseByAlter(databaseName,
metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName),
+
metaDataPersistFacade.getDatabaseMetaDataFacade().persistReloadDatabase(databaseName,
metaDataContextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName),
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
metaDataContextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules()
.forEach(each -> ((GlobalRule)
each).refresh(metaDataContextManager.getMetaDataContexts().getMetaData().getAllDatabases(),
GlobalRuleChangedType.DATABASE_CHANGED));
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 6681f79eab2..59ff721eae6 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
@@ -81,7 +81,7 @@ class StandaloneMetaDataManagerPersistServiceTest {
metaDataManagerPersistService.createDatabase("foo_db");
verify(metaDataContextManager.getDatabaseMetaDataManager()).addDatabase("foo_db");
verify(metaDataPersistFacade.getDatabaseMetaDataFacade().getDatabase()).add("foo_db");
-
verify(metaDataPersistFacade.getDatabaseMetaDataFacade()).persistReloadDatabaseByAlter(eq("foo_db"),
any(ShardingSphereDatabase.class), any(ShardingSphereDatabase.class));
+
verify(metaDataPersistFacade.getDatabaseMetaDataFacade()).persistReloadDatabase(eq("foo_db"),
any(ShardingSphereDatabase.class), any(ShardingSphereDatabase.class));
}
@Test