19
19
20
20
import lombok .SneakyThrows ;
21
21
import org .apache .shardingsphere .infra .config .rule .RuleConfiguration ;
22
- import org .apache .shardingsphere .infra .database .core .type .DatabaseTypeRegistry ;
23
22
import org .apache .shardingsphere .infra .datasource .pool .props .domain .DataSourcePoolProperties ;
24
23
import org .apache .shardingsphere .infra .exception .core .ShardingSpherePreconditions ;
25
24
import org .apache .shardingsphere .infra .metadata .database .ShardingSphereDatabase ;
26
25
import org .apache .shardingsphere .infra .metadata .database .rule .RuleMetaData ;
27
- import org .apache .shardingsphere .infra .metadata .database .schema .builder .GenericSchemaBuilder ;
28
- import org .apache .shardingsphere .infra .metadata .database .schema .builder .GenericSchemaBuilderMaterial ;
29
- import org .apache .shardingsphere .infra .metadata .database .schema .manager .GenericSchemaManager ;
30
- import org .apache .shardingsphere .infra .metadata .database .schema .model .ShardingSphereSchema ;
31
26
import org .apache .shardingsphere .infra .metadata .database .schema .model .ShardingSphereTable ;
32
27
import org .apache .shardingsphere .infra .metadata .database .schema .model .ShardingSphereView ;
33
28
import org .apache .shardingsphere .infra .metadata .statistics .DatabaseStatistics ;
34
29
import org .apache .shardingsphere .infra .metadata .statistics .SchemaStatistics ;
35
30
import org .apache .shardingsphere .infra .util .retry .RetryExecutor ;
36
- import org .apache .shardingsphere .mode .exception .LoadTableMetaDataFailedException ;
37
31
import org .apache .shardingsphere .mode .manager .cluster .exception .ReloadMetaDataContextFailedException ;
38
32
import org .apache .shardingsphere .mode .manager .cluster .persist .coordinator .database .ClusterDatabaseListenerCoordinatorType ;
39
33
import org .apache .shardingsphere .mode .manager .cluster .persist .coordinator .database .ClusterDatabaseListenerPersistCoordinator ;
46
40
import org .apache .shardingsphere .single .config .SingleRuleConfiguration ;
47
41
import org .apache .shardingsphere .single .rule .SingleRule ;
48
42
49
- import java .sql .SQLException ;
50
43
import java .util .Collection ;
51
44
import java .util .Collections ;
52
45
import java .util .Map ;
@@ -188,7 +181,7 @@ public void alterRuleConfiguration(final ShardingSphereDatabase database, final
188
181
Collection <String > needReloadTables = getNeedReloadTables (database , toBeAlteredRuleConfig );
189
182
MetaDataContexts originalMetaDataContexts = new MetaDataContexts (metaDataContextManager .getMetaDataContexts ().getMetaData (), metaDataContextManager .getMetaDataContexts ().getStatistics ());
190
183
metaDataPersistFacade .getDatabaseRuleService ().persist (database .getName (), Collections .singleton (toBeAlteredRuleConfig ));
191
- reloadAlteredTables ( database .getName (), originalMetaDataContexts , needReloadTables );
184
+ metaDataPersistFacade . getDatabaseMetaDataFacade (). persistAlteredTables ( database .getName (), getReloadedMetaDataContexts ( originalMetaDataContexts ) , needReloadTables );
192
185
}
193
186
194
187
@ Override
@@ -199,24 +192,7 @@ public void removeRuleConfigurationItem(final ShardingSphereDatabase database, f
199
192
Collection <String > needReloadTables = getNeedReloadTables (database , toBeRemovedRuleConfig );
200
193
MetaDataContexts originalMetaDataContexts = new MetaDataContexts (metaDataContextManager .getMetaDataContexts ().getMetaData (), metaDataContextManager .getMetaDataContexts ().getStatistics ());
201
194
metaDataPersistFacade .getDatabaseRuleService ().delete (database .getName (), Collections .singleton (toBeRemovedRuleConfig ));
202
- reloadAlteredTables (database .getName (), originalMetaDataContexts , needReloadTables );
203
- }
204
-
205
- private void reloadAlteredTables (final String databaseName , final MetaDataContexts originalMetaDataContexts , final Collection <String > needReloadTables ) {
206
- MetaDataContexts reloadMetaDataContexts = getReloadedMetaDataContexts (originalMetaDataContexts );
207
- ShardingSphereDatabase database = reloadMetaDataContexts .getMetaData ().getDatabase (databaseName );
208
- GenericSchemaBuilderMaterial material = new GenericSchemaBuilderMaterial (database .getResourceMetaData ().getStorageUnits (),
209
- database .getRuleMetaData ().getRules (), reloadMetaDataContexts .getMetaData ().getProps (),
210
- new DatabaseTypeRegistry (database .getProtocolType ()).getDefaultSchemaName (databaseName ));
211
- try {
212
- Map <String , ShardingSphereSchema > schemas = GenericSchemaBuilder .build (needReloadTables , database .getProtocolType (), material );
213
- for (Entry <String , ShardingSphereSchema > entry : schemas .entrySet ()) {
214
- Collection <ShardingSphereTable > tables = GenericSchemaManager .getToBeAddedTables (entry .getValue (), database .getSchema (entry .getKey ()));
215
- metaDataPersistFacade .getDatabaseMetaDataFacade ().getTable ().persist (databaseName , entry .getKey (), tables );
216
- }
217
- } catch (final SQLException ex ) {
218
- throw new LoadTableMetaDataFailedException (databaseName , needReloadTables , ex );
219
- }
195
+ metaDataPersistFacade .getDatabaseMetaDataFacade ().persistAlteredTables (database .getName (), getReloadedMetaDataContexts (originalMetaDataContexts ), needReloadTables );
220
196
}
221
197
222
198
private Collection <String > getNeedReloadTables (final ShardingSphereDatabase originalShardingDatabase , final RuleConfiguration toBeAlteredRuleConfig ) {
0 commit comments