Implementation:Apache Shardingsphere StorageUnitManager Manage
| Knowledge Sources | |
|---|---|
| Domains | Mode_Management, Data_Source |
| Last Updated | 2026-02-10 00:00 GMT |
Overview
Manager coordinating storage unit lifecycle operations with metadata context rebuilding.
Description
StorageUnitManager orchestrates storage unit registration, alteration, and unregistration by delegating resource switching to ResourceSwitchManager and then rebuilding the database metadata context. After each operation, stale data source connections are closed. Uses @Slf4j for logging and @SneakyThrows for checked exception handling.
Usage
Accessed via MetaDataContextManager.getStorageUnitManager() to handle storage unit changes from DistSQL or API calls.
Code Reference
Source Location
- Repository: Apache_Shardingsphere
- File: StorageUnitManager.java
- Lines: 1-137
Signature
@RequiredArgsConstructor
@Slf4j
public final class StorageUnitManager {
private final MetaDataContexts metaDataContexts;
public synchronized void registerStorageUnit(String databaseName, Map<String, DataSourcePoolProperties> toBeRegistered);
public synchronized void alterStorageUnit(String databaseName, Map<String, DataSourcePoolProperties> toBeAltered);
public synchronized void unregisterStorageUnit(String databaseName, Collection<String> toBeDropped);
}
Import
import org.apache.shardingsphere.mode.metadata.manager.resource.StorageUnitManager;
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| databaseName | String | Yes | Target database |
| toBeRegistered | Map<String, DataSourcePoolProperties> | Varies | Units to register |
| toBeDropped | Collection<String> | Varies | Unit names to remove |
Outputs
| Name | Type | Description |
|---|---|---|
| void | — | Side effect: rebuilds metadata context and closes stale connections |
Usage Examples
StorageUnitManager manager = metaDataContextManager.getStorageUnitManager();
// Register a new storage unit
Map<String, DataSourcePoolProperties> units = Collections.singletonMap("ds_1", poolProps);
manager.registerStorageUnit("my_database", units);
// Unregister storage units
manager.unregisterStorageUnit("my_database", Collections.singleton("ds_1"));