30
30
import org .apache .shardingsphere .infra .metadata .database .schema .model .ShardingSphereSchema ;
31
31
import org .apache .shardingsphere .infra .metadata .database .schema .model .ShardingSphereTable ;
32
32
import org .apache .shardingsphere .infra .metadata .database .schema .model .ShardingSphereView ;
33
+ import org .apache .shardingsphere .infra .metadata .statistics .DatabaseStatistics ;
34
+ import org .apache .shardingsphere .infra .metadata .statistics .SchemaStatistics ;
33
35
import org .apache .shardingsphere .infra .util .retry .RetryExecutor ;
34
36
import org .apache .shardingsphere .mode .exception .LoadTableMetaDataFailedException ;
35
37
import org .apache .shardingsphere .mode .manager .cluster .exception .ReloadMetaDataContextFailedException ;
@@ -142,20 +144,6 @@ public void alterStorageUnits(final ShardingSphereDatabase database, final Map<S
142
144
afterStorageUnitsAltered (database .getName (), originalMetaDataContexts );
143
145
}
144
146
145
- @ Override
146
- public void unregisterStorageUnits (final ShardingSphereDatabase database , final Collection <String > toBeDroppedStorageUnitNames ) {
147
- for (String each : getToBeDroppedResourceNames (database .getName (), toBeDroppedStorageUnitNames )) {
148
- MetaDataContexts originalMetaDataContexts = new MetaDataContexts (metaDataContextManager .getMetaDataContexts ().getMetaData (), metaDataContextManager .getMetaDataContexts ().getStatistics ());
149
- metaDataPersistFacade .getDataSourceUnitService ().delete (database .getName (), each );
150
- afterStorageUnitsDropped (database .getName (), originalMetaDataContexts );
151
- }
152
- }
153
-
154
- private Collection <String > getToBeDroppedResourceNames (final String databaseName , final Collection <String > toBeDroppedResourceNames ) {
155
- Map <String , DataSourcePoolProperties > propsMap = metaDataPersistFacade .getDataSourceUnitService ().load (databaseName );
156
- return toBeDroppedResourceNames .stream ().filter (propsMap ::containsKey ).collect (Collectors .toList ());
157
- }
158
-
159
147
private void afterStorageUnitsAltered (final String databaseName , final MetaDataContexts originalMetaDataContexts ) {
160
148
MetaDataContexts reloadMetaDataContexts = getReloadedMetaDataContexts (originalMetaDataContexts );
161
149
Optional .ofNullable (reloadMetaDataContexts .getStatistics ().getDatabaseStatistics (databaseName ))
@@ -165,24 +153,25 @@ private void afterStorageUnitsAltered(final String databaseName, final MetaDataC
165
153
originalMetaDataContexts .getMetaData ().getDatabase (databaseName ));
166
154
}
167
155
168
- private void afterStorageUnitsDropped (final String databaseName , final MetaDataContexts originalMetaDataContexts ) {
169
- MetaDataContexts reloadMetaDataContexts = getReloadedMetaDataContexts (originalMetaDataContexts );
170
- ShardingSphereDatabase database = reloadMetaDataContexts .getMetaData ().getDatabase (databaseName );
171
- GenericSchemaBuilderMaterial material = new GenericSchemaBuilderMaterial (database .getResourceMetaData ().getStorageUnits (),
172
- database .getRuleMetaData ().getRules (), reloadMetaDataContexts .getMetaData ().getProps (),
173
- new DatabaseTypeRegistry (database .getProtocolType ()).getDefaultSchemaName (databaseName ));
174
- try {
175
- Map <String , ShardingSphereSchema > schemas = GenericSchemaBuilder .build (database .getProtocolType (), material );
176
- for (Entry <String , ShardingSphereSchema > entry : schemas .entrySet ()) {
177
- Collection <ShardingSphereTable > tables = GenericSchemaManager .getToBeDroppedTables (entry .getValue (), database .getSchema (entry .getKey ()));
178
- tables .forEach (each -> metaDataPersistFacade .getDatabaseMetaDataFacade ().getTable ().drop (databaseName , entry .getKey (), each .getName ()));
156
+ @ Override
157
+ public void unregisterStorageUnits (final ShardingSphereDatabase database , final Collection <String > toBeDroppedStorageUnitNames ) {
158
+ for (String each : getToBeDroppedResourceNames (database .getName (), toBeDroppedStorageUnitNames )) {
159
+ MetaDataContexts originalMetaDataContexts = new MetaDataContexts (metaDataContextManager .getMetaDataContexts ().getMetaData (), metaDataContextManager .getMetaDataContexts ().getStatistics ());
160
+ metaDataPersistFacade .getDataSourceUnitService ().delete (database .getName (), each );
161
+ MetaDataContexts reloadMetaDataContexts = getReloadedMetaDataContexts (originalMetaDataContexts );
162
+ metaDataPersistFacade .getDatabaseMetaDataFacade ().unregisterStorageUnits (database .getName (), reloadMetaDataContexts );
163
+ DatabaseStatistics databaseStatistics = reloadMetaDataContexts .getStatistics ().getDatabaseStatistics (database .getName ());
164
+ if (null != databaseStatistics ) {
165
+ for (Entry <String , SchemaStatistics > entry : databaseStatistics .getSchemaStatisticsMap ().entrySet ()) {
166
+ metaDataPersistFacade .getStatisticsService ().persist (originalMetaDataContexts .getMetaData ().getDatabase (database .getName ()), entry .getKey (), entry .getValue ());
167
+ }
179
168
}
180
- } catch (final SQLException ex ) {
181
- throw new LoadTableMetaDataFailedException (databaseName , ex );
182
169
}
183
- Optional .ofNullable (reloadMetaDataContexts .getStatistics ().getDatabaseStatistics (databaseName ))
184
- .ifPresent (optional -> optional .getSchemaStatisticsMap ().forEach ((schemaName , schemaStatistics ) -> metaDataPersistFacade .getStatisticsService ()
185
- .persist (originalMetaDataContexts .getMetaData ().getDatabase (databaseName ), schemaName , schemaStatistics )));
170
+ }
171
+
172
+ private Collection <String > getToBeDroppedResourceNames (final String databaseName , final Collection <String > toBeDroppedResourceNames ) {
173
+ Map <String , DataSourcePoolProperties > propsMap = metaDataPersistFacade .getDataSourceUnitService ().load (databaseName );
174
+ return toBeDroppedResourceNames .stream ().filter (propsMap ::containsKey ).collect (Collectors .toList ());
186
175
}
187
176
188
177
@ Override
0 commit comments