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 ee3b43004a5 Fix sonar issue, use different methods to instead of
isDropConfig (#32170)
ee3b43004a5 is described below
commit ee3b43004a58bd0d0890e46e6a9ed7ab2a50c1b8
Author: Haoran Meng <[email protected]>
AuthorDate: Thu Jul 18 17:20:55 2024 +0800
Fix sonar issue, use different methods to instead of isDropConfig (#32170)
* Fix sonar issue, use different methods to instead of isDropConfig
* Fix sonar issue, use different methods to instead of isDropConfig
---
.../schema/model/ShardingSphereSchema.java | 8 +++++
.../database/type/AlterDatabaseRuleOperator.java | 2 +-
.../database/type/CreateDatabaseRuleOperator.java | 2 +-
.../database/type/DropDatabaseRuleOperator.java | 4 +--
.../rdl/resource/AlterStorageUnitExecutor.java | 2 +-
.../rdl/resource/RegisterStorageUnitExecutor.java | 2 +-
.../resource/UnregisterStorageUnitExecutor.java | 2 +-
.../metadata/persist/MetaDataPersistService.java | 30 +++++++++++-----
.../database/DatabaseMetaDataPersistService.java | 25 -------------
.../mode/metadata/MetaDataContextManager.java | 7 +++-
.../mode/metadata/MetaDataContextsFactory.java | 8 +++--
.../service/MetaDataManagerPersistService.java | 24 ++++++++++---
.../ListenerAssistedDispatchEventBuilder.java | 2 +-
.../ClusterMetaDataManagerPersistService.java | 42 +++++++++++++---------
.../StandaloneMetaDataManagerPersistService.java | 27 +++++++++-----
15 files changed, 113 insertions(+), 74 deletions(-)
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java
index 10bdac8ac12..0f997f27083 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchema.java
@@ -197,4 +197,12 @@ public final class ShardingSphereSchema {
public List<String> getVisibleColumnNames(final String tableName) {
return containsTable(tableName) ?
getTable(tableName).getVisibleColumns() : Collections.emptyList();
}
+
+ /**
+ * Schema is empty or not.
+ * @return true if tables and views are all empty, else false
+ */
+ public boolean isEmpty() {
+ return tables.isEmpty() && views.isEmpty();
+ }
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java
index af775294f7f..5666d5aa196 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java
@@ -57,7 +57,7 @@ public final class AlterDatabaseRuleOperator implements
DatabaseRuleOperator {
MetaDataContexts originalMetaDataContexts =
contextManager.getMetaDataContexts();
metaDataManagerPersistService.removeRuleConfigurationItem(database.getName(),
toBeDroppedRuleConfig);
Collection<MetaDataVersion> result =
metaDataManagerPersistService.alterRuleConfiguration(database.getName(),
decorateRuleConfiguration(database, toBeAlteredRuleConfig));
-
metaDataManagerPersistService.afterRuleConfigurationAltered(database.getName(),
originalMetaDataContexts, false);
+
metaDataManagerPersistService.afterRuleConfigurationAltered(database.getName(),
originalMetaDataContexts);
return result;
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java
index a3db2487057..c83c6abf616 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java
@@ -55,7 +55,7 @@ public final class CreateDatabaseRuleOperator implements
DatabaseRuleOperator {
MetaDataContexts originalMetaDataContexts =
contextManager.getMetaDataContexts();
MetaDataManagerPersistService metaDataManagerPersistService =
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService();
Collection<MetaDataVersion> result =
metaDataManagerPersistService.alterRuleConfiguration(database.getName(),
decorateRuleConfiguration(database, toBeCreatedRuleConfig));
-
metaDataManagerPersistService.afterRuleConfigurationAltered(database.getName(),
originalMetaDataContexts, false);
+
metaDataManagerPersistService.afterRuleConfigurationAltered(database.getName(),
originalMetaDataContexts);
return result;
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
index d55abf3acb5..289e4f7bc66 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/DropDatabaseRuleOperator.java
@@ -71,11 +71,11 @@ public final class DropDatabaseRuleOperator implements
DatabaseRuleOperator {
if (null != toBeAlteredRuleConfig && ((DatabaseRuleConfiguration)
toBeAlteredRuleConfig).isEmpty()) {
YamlRuleConfiguration yamlRuleConfig = new
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfiguration(currentRuleConfig);
metaDataManagerPersistService.removeRuleConfiguration(database.getName(),
Objects.requireNonNull(yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class)).value());
-
metaDataManagerPersistService.afterRuleConfigurationAltered(database.getName(),
originalMetaDataContexts, true);
+
metaDataManagerPersistService.afterRuleConfigurationDropped(database.getName(),
originalMetaDataContexts);
return Collections.emptyList();
}
Collection<MetaDataVersion> result =
metaDataManagerPersistService.alterRuleConfiguration(database.getName(),
toBeAlteredRuleConfig);
-
metaDataManagerPersistService.afterRuleConfigurationAltered(database.getName(),
originalMetaDataContexts, false);
+
metaDataManagerPersistService.afterRuleConfigurationAltered(database.getName(),
originalMetaDataContexts);
return result;
}
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
index 82791ab55c8..cc06b9d97dd 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/AlterStorageUnitExecutor.java
@@ -68,7 +68,7 @@ public final class AlterStorageUnitExecutor implements
DistSQLUpdateExecutor<Alt
try {
MetaDataContexts originalMetaDataContexts =
contextManager.getMetaDataContexts();
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().alterStorageUnits(database.getName(),
propsMap);
-
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().afterStorageUnitsAltered(database.getName(),
originalMetaDataContexts, false);
+
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().afterStorageUnitsAltered(database.getName(),
originalMetaDataContexts);
} catch (final SQLException | ShardingSphereExternalException ex) {
throw new StorageUnitsOperateException("alter", propsMap.keySet(),
ex);
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
index a0e15507fa1..594b0b3d2c7 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/RegisterStorageUnitExecutor.java
@@ -70,7 +70,7 @@ public final class RegisterStorageUnitExecutor implements
DistSQLUpdateExecutor<
try {
MetaDataContexts originalMetaDataContexts =
contextManager.getMetaDataContexts();
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().registerStorageUnits(database.getName(),
propsMap);
-
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().afterStorageUnitsAltered(database.getName(),
originalMetaDataContexts, false);
+
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().afterStorageUnitsAltered(database.getName(),
originalMetaDataContexts);
} catch (final SQLException | ShardingSphereExternalException ex) {
throw new StorageUnitsOperateException("register",
propsMap.keySet(), ex);
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java
index 7bdcfc73669..de16753f1a7 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rdl/resource/UnregisterStorageUnitExecutor.java
@@ -60,7 +60,7 @@ public final class UnregisterStorageUnitExecutor implements
DistSQLUpdateExecuto
try {
MetaDataContexts originalMetaDataContexts =
contextManager.getMetaDataContexts();
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().unregisterStorageUnits(database.getName(),
sqlStatement.getStorageUnitNames());
-
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().afterStorageUnitsAltered(database.getName(),
originalMetaDataContexts, true);
+
contextManager.getPersistServiceFacade().getMetaDataManagerPersistService().afterStorageUnitsDropped(database.getName(),
originalMetaDataContexts);
} catch (final SQLException | ShardingSphereServerException ex) {
throw new StorageUnitsOperateException("unregister",
sqlStatement.getStorageUnitNames(), ex);
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
index 08c5188aed3..acb5da8c3f5 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java
@@ -142,21 +142,35 @@ public final class MetaDataPersistService {
}
/**
- * Persist meta data by reload sharding sphere database.
+ * Persist reload meta data by alter.
*
* @param databaseName database name
* @param reloadDatabase reload database
* @param currentDatabase current database
- * @param isDropConfig is drop config
*/
- public void persistMetaDataByReloadDatabase(final String databaseName,
final ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase, final boolean isDropConfig) {
+ public void persistReloadDatabaseByAlter(final String databaseName, final
ShardingSphereDatabase reloadDatabase, final ShardingSphereDatabase
currentDatabase) {
Map<String, ShardingSphereSchema> toBeAlterSchemas =
GenericSchemaManager.getToBeDeletedTablesBySchemas(reloadDatabase.getSchemas(),
currentDatabase.getSchemas());
Map<String, ShardingSphereSchema> toBeAddedSchemas =
GenericSchemaManager.getToBeAddedTablesBySchemas(reloadDatabase.getSchemas(),
currentDatabase.getSchemas());
- if (isDropConfig) {
- toBeAddedSchemas.forEach((key, value) ->
databaseMetaDataService.persistByDropConfiguration(databaseName, key, value));
- } else {
- toBeAddedSchemas.forEach((key, value) ->
databaseMetaDataService.persistByAlterConfiguration(databaseName, key, value));
- }
+ toBeAddedSchemas.forEach((schemaName, schema) -> {
+ if (schema.isEmpty()) {
+ databaseMetaDataService.addSchema(databaseName, schemaName);
+ }
+
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName,
schemaName, schema.getTables());
+ });
+ toBeAlterSchemas.forEach((key, value) ->
databaseMetaDataService.delete(databaseName, key, value));
+ }
+
+ /**
+ * 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) {
+ Map<String, ShardingSphereSchema> toBeAlterSchemas =
GenericSchemaManager.getToBeDeletedTablesBySchemas(reloadDatabase.getSchemas(),
currentDatabase.getSchemas());
+ Map<String, ShardingSphereSchema> toBeAddedSchemas =
GenericSchemaManager.getToBeAddedTablesBySchemas(reloadDatabase.getSchemas(),
currentDatabase.getSchemas());
+ toBeAddedSchemas.forEach((key, value) ->
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName,
key, value.getTables()));
toBeAlterSchemas.forEach((key, value) ->
databaseMetaDataService.delete(databaseName, key, value));
}
}
diff --git
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/database/DatabaseMetaDataPersistService.java
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/database/DatabaseMetaDataPersistService.java
index 359a4c8ac90..c7247f7f2a5 100644
---
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/database/DatabaseMetaDataPersistService.java
+++
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/database/DatabaseMetaDataPersistService.java
@@ -115,31 +115,6 @@ public final class DatabaseMetaDataPersistService {
GenericSchemaManager.getToBeDeletedTables(schema.getTables(),
currentTables).forEach((key, value) ->
tableMetaDataPersistService.delete(databaseName, schemaName, key));
}
- /**
- * Persist by alter configuration.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @param schema schema meta data
- */
- public void persistByAlterConfiguration(final String databaseName, final
String schemaName, final ShardingSphereSchema schema) {
- if (schema.getTables().isEmpty() && schema.getViews().isEmpty()) {
- addSchema(databaseName, schemaName);
- }
- tableMetaDataPersistService.persist(databaseName, schemaName,
schema.getTables());
- }
-
- /**
- * Persist by drop configuration.
- *
- * @param databaseName database name
- * @param schemaName schema name
- * @param schema schema meta data
- */
- public void persistByDropConfiguration(final String databaseName, final
String schemaName, final ShardingSphereSchema schema) {
- tableMetaDataPersistService.persist(databaseName, schemaName,
schema.getTables());
- }
-
/**
* Delete schema metadata.
*
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
index 439119721b7..0ff49fa206e 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
@@ -116,7 +116,12 @@ public class MetaDataContextManager {
MetaDataContexts reloadedMetaDataContexts =
createMetaDataContexts(database);
metaDataContexts.set(reloadedMetaDataContexts);
metaDataContexts.get().getMetaData().getDatabase(database.getName()).getSchemas()
- .forEach((schemaName, schema) ->
metaDataPersistService.getDatabaseMetaDataService().persistByAlterConfiguration(database.getName(),
schemaName, schema));
+ .forEach((schemaName, schema) -> {
+ if (schema.isEmpty()) {
+
metaDataPersistService.getDatabaseMetaDataService().addSchema(database.getName(),
schemaName);
+ }
+
metaDataPersistService.getDatabaseMetaDataService().getTableMetaDataPersistService().persist(database.getName(),
schemaName, schema.getTables());
+ });
} catch (final SQLException ex) {
log.error("Refresh database meta data: {} failed",
database.getName(), ex);
}
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 c90bd7f6bb5..338b12a6b34 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
@@ -191,8 +191,12 @@ public final class MetaDataContextsFactory {
}
private static void persistMetaData(final MetaDataContexts
metaDataContexts, final MetaDataPersistService persistService) {
- metaDataContexts.getMetaData().getDatabases().values().forEach(each ->
each.getSchemas().forEach((schemaName, schema) ->
persistService.getDatabaseMetaDataService()
- .persistByAlterConfiguration(each.getName(), schemaName,
schema)));
+ metaDataContexts.getMetaData().getDatabases().values().forEach(each ->
each.getSchemas().forEach((schemaName, schema) -> {
+ if (schema.isEmpty()) {
+
persistService.getDatabaseMetaDataService().addSchema(each.getName(),
schemaName);
+ }
+
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())));
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java
index 7afc2b36c4d..6286000b320 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/MetaDataManagerPersistService.java
@@ -159,9 +159,17 @@ public interface MetaDataManagerPersistService {
*
* @param databaseName database name
* @param originalMetaDataContexts original meta data contexts
- * @param isDropConfig is drop config
*/
- default void afterStorageUnitsAltered(String databaseName,
MetaDataContexts originalMetaDataContexts, boolean isDropConfig) {
+ default void afterStorageUnitsAltered(String databaseName,
MetaDataContexts originalMetaDataContexts) {
+ }
+
+ /**
+ * After storage units dropped.
+ *
+ * @param databaseName database name
+ * @param originalMetaDataContexts original meta data contexts
+ */
+ default void afterStorageUnitsDropped(String databaseName,
MetaDataContexts originalMetaDataContexts) {
}
/**
@@ -169,8 +177,16 @@ public interface MetaDataManagerPersistService {
*
* @param databaseName database name
* @param originalMetaDataContexts original meta data contexts
- * @param isDropConfig is drop config
*/
- default void afterRuleConfigurationAltered(String databaseName,
MetaDataContexts originalMetaDataContexts, boolean isDropConfig) {
+ default void afterRuleConfigurationAltered(String databaseName,
MetaDataContexts originalMetaDataContexts) {
+ }
+
+ /**
+ * After rule configuration dropped.
+ *
+ * @param databaseName database name
+ * @param originalMetaDataContexts original meta data contexts
+ */
+ default void afterRuleConfigurationDropped(String databaseName,
MetaDataContexts originalMetaDataContexts) {
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ListenerAssistedDispatchEventBuilder.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ListenerAssistedDispatchEventBuilder.java
index cbd24d82afc..0d4d8ad7a33 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ListenerAssistedDispatchEventBuilder.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ListenerAssistedDispatchEventBuilder.java
@@ -35,7 +35,7 @@ import java.util.Optional;
/**
* Listener assisted dispatch event builder.
*/
-public class ListenerAssistedDispatchEventBuilder implements
DispatchEventBuilder<DispatchEvent> {
+public final class ListenerAssistedDispatchEventBuilder implements
DispatchEventBuilder<DispatchEvent> {
@Override
public Collection<String> getSubscribedKeys() {
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 cf3fde51854..ccb052005de 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
@@ -85,7 +85,10 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
String schemaName = alterSchemaPOJO.getSchemaName();
ShardingSphereSchema schema =
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getSchema(schemaName);
DatabaseMetaDataPersistService databaseMetaDataService =
metaDataPersistService.getDatabaseMetaDataService();
- databaseMetaDataService.persistByAlterConfiguration(databaseName,
alterSchemaPOJO.getRenameSchemaName(), schema);
+ if (schema.isEmpty()) {
+ databaseMetaDataService.addSchema(databaseName,
alterSchemaPOJO.getRenameSchemaName());
+ }
+
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName,
alterSchemaPOJO.getRenameSchemaName(), schema.getTables());
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName,
alterSchemaPOJO.getRenameSchemaName(), schema.getViews());
databaseMetaDataService.dropSchema(databaseName, schemaName);
}
@@ -172,31 +175,36 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
}
@Override
- public void afterStorageUnitsAltered(final String databaseName, final
MetaDataContexts originalMetaDataContexts, final boolean isDropConfig) {
+ public void afterStorageUnitsAltered(final String databaseName, final
MetaDataContexts originalMetaDataContexts) {
MetaDataContexts reloadMetaDataContexts =
metaDataContextManager.getMetaDataContexts().get();
- // TODO Confirm if it should be persisted twice
- persistSchemaMetaData(databaseName, reloadMetaDataContexts,
isDropConfig);
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
.ifPresent(optional ->
optional.getSchemaData().forEach((schemaName, schemaData) ->
metaDataPersistService.getShardingSphereDataPersistService()
.persist(databaseName, schemaName, schemaData,
originalMetaDataContexts.getMetaData().getDatabases())));
- metaDataPersistService.persistMetaDataByReloadDatabase(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
-
originalMetaDataContexts.getMetaData().getDatabase(databaseName), isDropConfig);
+ metaDataPersistService.persistReloadDatabaseByAlter(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
}
@Override
- public void afterRuleConfigurationAltered(final String databaseName, final
MetaDataContexts originalMetaDataContexts, final boolean isDropConfig) {
+ public void afterStorageUnitsDropped(final String databaseName, final
MetaDataContexts originalMetaDataContexts) {
MetaDataContexts reloadMetaDataContexts =
metaDataContextManager.getMetaDataContexts().get();
- metaDataPersistService.persistMetaDataByReloadDatabase(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
-
originalMetaDataContexts.getMetaData().getDatabase(databaseName), isDropConfig);
+
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
+ .ifPresent(optional ->
optional.getSchemaData().forEach((schemaName, schemaData) ->
metaDataPersistService.getShardingSphereDataPersistService()
+ .persist(databaseName, schemaName, schemaData,
originalMetaDataContexts.getMetaData().getDatabases())));
+ metaDataPersistService.persistReloadDatabaseByDrop(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
}
- private void persistSchemaMetaData(final String databaseName, final
MetaDataContexts reloadMetaDataContexts, final boolean isDropConfig) {
- if (isDropConfig) {
-
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
schema) -> metaDataPersistService.getDatabaseMetaDataService()
-
.persistByDropConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
schemaName, schema));
- } else {
-
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
schema) -> metaDataPersistService.getDatabaseMetaDataService()
-
.persistByAlterConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
schemaName, schema));
- }
+ @Override
+ public void afterRuleConfigurationAltered(final String databaseName, final
MetaDataContexts originalMetaDataContexts) {
+ MetaDataContexts reloadMetaDataContexts =
metaDataContextManager.getMetaDataContexts().get();
+ metaDataPersistService.persistReloadDatabaseByAlter(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
+ }
+
+ @Override
+ public void afterRuleConfigurationDropped(final String databaseName, final
MetaDataContexts originalMetaDataContexts) {
+ MetaDataContexts reloadMetaDataContexts =
metaDataContextManager.getMetaDataContexts().get();
+ metaDataPersistService.persistReloadDatabaseByDrop(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
}
}
diff --git
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
index f63a34fe3c8..1a9fee7b95e 100644
---
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
+++
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
@@ -98,7 +98,7 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
ShardingSphereDatabase database = metaData.getDatabase(databaseName);
database.addSchema(schemaName, schema);
metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
-
metaDataPersistService.getDatabaseMetaDataService().persistByAlterConfiguration(databaseName,
schemaName, schema);
+
metaDataPersistService.getDatabaseMetaDataService().addSchema(databaseName,
schemaName);
}
@Override
@@ -109,10 +109,15 @@ public final class
StandaloneMetaDataManagerPersistService implements MetaDataMa
removeSchemaMetaData(database, alterSchemaPOJO.getSchemaName());
metaData.getGlobalRuleMetaData().getRules().forEach(each ->
((GlobalRule) each).refresh(metaData.getDatabases(),
GlobalRuleChangedType.SCHEMA_CHANGED));
DatabaseMetaDataPersistService databaseMetaDataService =
metaDataPersistService.getDatabaseMetaDataService();
-
databaseMetaDataService.persistByAlterConfiguration(alterSchemaPOJO.getDatabaseName(),
alterSchemaPOJO.getRenameSchemaName(),
database.getSchema(alterSchemaPOJO.getRenameSchemaName()));
-
databaseMetaDataService.getViewMetaDataPersistService().persist(alterSchemaPOJO.getDatabaseName(),
alterSchemaPOJO.getRenameSchemaName(),
-
database.getSchema(alterSchemaPOJO.getRenameSchemaName()).getViews());
- databaseMetaDataService.dropSchema(alterSchemaPOJO.getDatabaseName(),
alterSchemaPOJO.getSchemaName());
+ ShardingSphereSchema alteredSchema =
database.getSchema(alterSchemaPOJO.getRenameSchemaName());
+ String databaseName = alterSchemaPOJO.getDatabaseName();
+ String alteredSchemaName = alterSchemaPOJO.getRenameSchemaName();
+ if (alteredSchema.isEmpty()) {
+ databaseMetaDataService.addSchema(databaseName, alteredSchemaName);
+ }
+
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName,
alteredSchemaName, alteredSchema.getTables());
+
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName,
alteredSchemaName, alteredSchema.getViews());
+ databaseMetaDataService.dropSchema(databaseName,
alterSchemaPOJO.getSchemaName());
}
private void putSchemaMetaData(final ShardingSphereDatabase database,
final String schemaName, final String renameSchemaName, final String
logicDataSourceName) {
@@ -230,8 +235,12 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
metaDataContextManager.getMetaDataContexts().get().getMetaData().getGlobalRuleMetaData().getRules()
.forEach(each -> ((GlobalRule)
each).refresh(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabases(),
GlobalRuleChangedType.DATABASE_CHANGED));
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getSchemas()
- .forEach((schemaName, schema) ->
metaDataPersistService.getDatabaseMetaDataService()
-
.persistByAlterConfiguration(metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName).getName(),
schemaName, schema));
+ .forEach((schemaName, schema) -> {
+ if (schema.isEmpty()) {
+
metaDataPersistService.getDatabaseMetaDataService().addSchema(databaseName,
schemaName);
+ }
+
metaDataPersistService.getDatabaseMetaDataService().getTableMetaDataPersistService().persist(databaseName,
schemaName, schema.getTables());
+ });
DataSourceUnitPersistService dataSourceService =
metaDataPersistService.getDataSourceUnitService();
metaDataPersistService.getMetaDataVersionPersistService()
.switchActiveVersion(dataSourceService.persistConfigurations(databaseName,
toBeRegisteredProps));
@@ -260,8 +269,8 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
.getDatabase(databaseName).getResourceMetaData(),
toBeDroppedStorageUnitNames);
MetaDataContexts reloadMetaDataContexts =
MetaDataContextsFactory.createBySwitchResource(databaseName, false,
switchingResource,
metaDataContextManager.getMetaDataContexts().get(),
metaDataPersistService, metaDataContextManager.getComputeNodeInstanceContext());
- metaDataPersistService.persistMetaDataByReloadDatabase(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
-
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName),
true);
+ metaDataPersistService.persistReloadDatabaseByDrop(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName));
metaDataContextManager.deletedSchemaNames(databaseName,
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
metaDataContextManager.getMetaDataContexts().get().getMetaData().getDatabase(databaseName));
metaDataContextManager.renewMetaDataContexts(reloadMetaDataContexts);