This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 b5036e3b124 Refactor StandaloneMetaDataManagerPersistService to move
persist logic before memory updated (#34477)
b5036e3b124 is described below
commit b5036e3b1245400ff8dfddf4ff9d151e25329ac3
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jan 25 11:05:46 2025 +0800
Refactor StandaloneMetaDataManagerPersistService to move persist logic
before memory updated (#34477)
---
.../StandaloneMetaDataManagerPersistService.java | 31 +++++++++++-----------
1 file changed, 15 insertions(+), 16 deletions(-)
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 72f187f58cb..845d28ce9db 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
@@ -74,49 +74,46 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
@Override
public void createDatabase(final String databaseName) {
-
metaDataContextManager.getSchemaMetaDataManager().addDatabase(databaseName);
metaDataPersistService.getDatabaseMetaDataFacade().getDatabase().add(databaseName);
+
metaDataContextManager.getSchemaMetaDataManager().addDatabase(databaseName);
clearServiceCache();
}
@Override
public void dropDatabase(final String databaseName) {
-
metaDataContextManager.getSchemaMetaDataManager().dropDatabase(databaseName);
metaDataPersistService.getDatabaseMetaDataFacade().getDatabase().drop(databaseName);
+
metaDataContextManager.getSchemaMetaDataManager().dropDatabase(databaseName);
clearServiceCache();
}
@Override
public void createSchema(final String databaseName, final String
schemaName) {
+
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
schemaName);
ShardingSphereMetaData metaData =
metaDataContextManager.getMetaDataContexts().getMetaData();
ShardingSphereDatabase database = metaData.getDatabase(databaseName);
database.addSchema(new ShardingSphereSchema(schemaName));
metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getAllDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
-
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
schemaName);
}
@Override
public void alterSchema(final String databaseName, final String
schemaName, final String logicDataSourceName,
final Collection<ShardingSphereTable>
alteredTables, final Collection<ShardingSphereView> alteredViews,
final Collection<String> droppedTables, final
Collection<String> droppedViews) {
+
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
schemaName, alteredTables);
+
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
schemaName, alteredViews);
+ droppedTables.forEach(each ->
metaDataPersistService.getDatabaseMetaDataFacade().getTable().drop(databaseName,
schemaName, each));
+ droppedViews.forEach(each ->
metaDataPersistService.getDatabaseMetaDataFacade().getView().delete(databaseName,
schemaName, each));
ShardingSphereMetaData metaData =
metaDataContextManager.getMetaDataContexts().getMetaData();
ShardingSphereDatabase database = metaData.getDatabase(databaseName);
addDataNode(database, logicDataSourceName, schemaName, alteredTables,
alteredViews);
removeDataNode(database, schemaName, droppedTables, droppedViews);
metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getAllDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
-
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
schemaName, alteredTables);
-
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
schemaName, alteredViews);
- droppedTables.forEach(each ->
metaDataPersistService.getDatabaseMetaDataFacade().getTable().drop(databaseName,
schemaName, each));
- droppedViews.forEach(each ->
metaDataPersistService.getDatabaseMetaDataFacade().getView().delete(databaseName,
schemaName, each));
}
@Override
public void alterSchemaName(final String databaseName, final String
schemaName, final String renameSchemaName, final String logicDataSourceName) {
ShardingSphereMetaData metaData =
metaDataContextManager.getMetaDataContexts().getMetaData();
ShardingSphereDatabase database = metaData.getDatabase(databaseName);
- putSchemaMetaData(database, schemaName, renameSchemaName,
logicDataSourceName);
- removeSchemaMetaData(database, schemaName);
- metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getAllDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
ShardingSphereSchema alteredSchema =
database.getSchema(renameSchemaName);
if (alteredSchema.isEmpty()) {
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().add(databaseName,
renameSchemaName);
@@ -124,6 +121,9 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
renameSchemaName, alteredSchema.getAllTables());
metaDataPersistService.getDatabaseMetaDataFacade().getView().persist(databaseName,
renameSchemaName, alteredSchema.getAllViews());
metaDataPersistService.getDatabaseMetaDataFacade().getSchema().drop(databaseName,
schemaName);
+ putSchemaMetaData(database, schemaName, renameSchemaName,
logicDataSourceName);
+ removeSchemaMetaData(database, schemaName);
+ metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getAllDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
}
private void putSchemaMetaData(final ShardingSphereDatabase database,
final String schemaName, final String renamedSchemaName, final String
logicDataSourceName) {
@@ -216,20 +216,20 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
@Override
public void createTable(final String databaseName, final String
schemaName, final ShardingSphereTable table, final String logicDataSourceName) {
+
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
schemaName, Collections.singleton(table));
ShardingSphereMetaData metaData =
metaDataContextManager.getMetaDataContexts().getMetaData();
ShardingSphereDatabase database = metaData.getDatabase(databaseName);
addTableToDataNode(database, schemaName, logicDataSourceName, table);
metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getAllDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
-
metaDataPersistService.getDatabaseMetaDataFacade().getTable().persist(databaseName,
schemaName, Collections.singleton(table));
}
@Override
public void dropTables(final String databaseName, final String schemaName,
final Collection<String> tableNames) {
+ tableNames.forEach(each ->
metaDataPersistService.getDatabaseMetaDataFacade().getTable().drop(databaseName,
schemaName, each));
ShardingSphereMetaData metaData =
metaDataContextManager.getMetaDataContexts().getMetaData();
ShardingSphereDatabase database = metaData.getDatabase(databaseName);
removeTablesToDataNode(database, schemaName, tableNames);
metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getAllDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
- tableNames.forEach(each ->
metaDataPersistService.getDatabaseMetaDataFacade().getTable().drop(databaseName,
schemaName, each));
}
private void addTableToDataNode(final ShardingSphereDatabase database,
final String schemaName, final String logicDataSourceName, final
ShardingSphereTable table) {
@@ -271,8 +271,7 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
metaDataContextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules()
.forEach(each -> ((GlobalRule)
each).refresh(metaDataContextManager.getMetaDataContexts().getMetaData().getAllDatabases(),
GlobalRuleChangedType.DATABASE_CHANGED));
DataSourceUnitPersistService dataSourceService =
metaDataPersistService.getDataSourceUnitService();
- metaDataPersistService.getMetaDataVersionPersistService()
- .switchActiveVersion(dataSourceService.persist(databaseName,
toBeUpdatedProps));
+
metaDataPersistService.getMetaDataVersionPersistService().switchActiveVersion(dataSourceService.persist(databaseName,
toBeUpdatedProps));
switchingResource.closeStaleDataSources();
clearServiceCache();
}
@@ -348,15 +347,15 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
@Override
public void alterGlobalRuleConfiguration(final RuleConfiguration
toBeAlteredRuleConfig) {
-
metaDataContextManager.getGlobalConfigurationManager().alterGlobalRuleConfiguration(toBeAlteredRuleConfig);
metaDataPersistService.getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
+
metaDataContextManager.getGlobalConfigurationManager().alterGlobalRuleConfiguration(toBeAlteredRuleConfig);
clearServiceCache();
}
@Override
public void alterProperties(final Properties props) {
-
metaDataContextManager.getGlobalConfigurationManager().alterProperties(props);
metaDataPersistService.getPropsService().persist(props);
+
metaDataContextManager.getGlobalConfigurationManager().alterProperties(props);
clearServiceCache();
}