You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2025/10/10 03:19:54 UTC
(shardingsphere) branch master updated: Refactor DatabaseMetaDataPersistFacade (#36834)
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 <me...@gmail.com>
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