diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/resource/StorageUnitManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/resource/StorageUnitManager.java index 259e60a1a9801..845304e07eced 100644 --- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/resource/StorageUnitManager.java +++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/resource/StorageUnitManager.java @@ -57,10 +57,10 @@ public final class StorageUnitManager { * @param propsMap data source pool properties map */ public synchronized void register(final String databaseName, final Map propsMap) { + ShardingSphereDatabase database = metaDataContexts.getMetaData().getDatabase(databaseName); try { - closeStaleRules(databaseName); - SwitchingResource switchingResource = resourceSwitchManager.switchByRegisterStorageUnit(metaDataContexts.getMetaData().getDatabase(databaseName).getResourceMetaData(), propsMap); - buildNewMetaDataContext(databaseName, switchingResource); + closeStaleRules(database); + buildNewMetaDataContext(databaseName, resourceSwitchManager.switchByRegisterStorageUnit(database.getResourceMetaData(), propsMap)); } catch (final SQLException ex) { log.error("Alter database: {} register storage unit failed.", databaseName, ex); } @@ -73,10 +73,10 @@ public synchronized void register(final String databaseName, final Map propsMap) { + ShardingSphereDatabase database = metaDataContexts.getMetaData().getDatabase(databaseName); try { - closeStaleRules(databaseName); - SwitchingResource switchingResource = resourceSwitchManager.switchByAlterStorageUnit(metaDataContexts.getMetaData().getDatabase(databaseName).getResourceMetaData(), propsMap); - buildNewMetaDataContext(databaseName, switchingResource); + closeStaleRules(database); + buildNewMetaDataContext(databaseName, resourceSwitchManager.switchByAlterStorageUnit(database.getResourceMetaData(), propsMap)); } catch (final SQLException ex) { log.error("Alter database: {} alter storage unit failed.", databaseName, ex); } @@ -89,11 +89,10 @@ public synchronized void alter(final String databaseName, final Map buildSchemas(final ShardingSphereDataba } @SneakyThrows(Exception.class) - private void closeStaleRules(final String databaseName) { - for (ShardingSphereRule each : metaDataContexts.getMetaData().getDatabase(databaseName).getRuleMetaData().getRules()) { + private void closeStaleRules(final ShardingSphereDatabase database) { + for (ShardingSphereRule each : database.getRuleMetaData().getRules()) { if (each instanceof AutoCloseable) { ((AutoCloseable) each).close(); }