refactor: expose DatanodeBuilder::build_object_store_manager() and MitoConfig::sanitize() (#4212)

* refactor: expose DatanodeBuilder::build_object_store_manager()

* refactor: expose MitoConfig::sanitize()
This commit is contained in:
zyy17
2024-07-01 14:36:32 +08:00
committed by GitHub
parent 6a634f8e5d
commit fe2c5c3735
2 changed files with 17 additions and 18 deletions

View File

@@ -52,7 +52,7 @@ use store_api::storage::RegionId;
use tokio::fs;
use tokio::sync::Notify;
use crate::config::{DatanodeOptions, RegionEngineConfig};
use crate::config::{DatanodeOptions, RegionEngineConfig, StorageConfig};
use crate::error::{
self, BuildMitoEngineSnafu, CreateDirSnafu, GetMetadataSnafu, MissingKvBackendSnafu,
MissingNodeIdSnafu, OpenLogStoreSnafu, Result, RuntimeResourceSnafu, ShutdownInstanceSnafu,
@@ -269,6 +269,20 @@ impl DatanodeBuilder {
})
}
/// Builds [ObjectStoreManager] from [StorageConfig].
pub async fn build_object_store_manager(cfg: &StorageConfig) -> Result<ObjectStoreManagerRef> {
let object_store = store::new_object_store(cfg.store.clone(), &cfg.data_home).await?;
let default_name = cfg.store.name();
let mut object_store_manager = ObjectStoreManager::new(default_name, object_store);
for store in &cfg.providers {
object_store_manager.add(
store.name(),
store::new_object_store(store.clone(), &cfg.data_home).await?,
);
}
Ok(Arc::new(object_store_manager))
}
#[cfg(test)]
/// Open all regions belong to this datanode.
async fn initialize_region_server(
@@ -328,7 +342,7 @@ impl DatanodeBuilder {
table_provider_factory,
);
let object_store_manager = Self::build_object_store_manager(opts).await?;
let object_store_manager = Self::build_object_store_manager(&opts.storage).await?;
let engines = Self::build_store_engines(opts, object_store_manager).await?;
for engine in engines {
region_server.register_engine(engine);
@@ -431,21 +445,6 @@ impl DatanodeBuilder {
.context(OpenLogStoreSnafu)
.map(Arc::new)
}
/// Builds [ObjectStoreManager]
async fn build_object_store_manager(opts: &DatanodeOptions) -> Result<ObjectStoreManagerRef> {
let object_store =
store::new_object_store(opts.storage.store.clone(), &opts.storage.data_home).await?;
let default_name = opts.storage.store.name();
let mut object_store_manager = ObjectStoreManager::new(default_name, object_store);
for store in &opts.storage.providers {
object_store_manager.add(
store.name(),
store::new_object_store(store.clone(), &opts.storage.data_home).await?,
);
}
Ok(Arc::new(object_store_manager))
}
}
/// Open all regions belong to this datanode.

View File

@@ -151,7 +151,7 @@ impl MitoConfig {
/// Sanitize incorrect configurations.
///
/// Returns an error if there is a configuration that unable to sanitize.
pub(crate) fn sanitize(&mut self, data_home: &str) -> Result<()> {
pub fn sanitize(&mut self, data_home: &str) -> Result<()> {
// Use default value if `num_workers` is 0.
if self.num_workers == 0 {
self.num_workers = divide_num_cpus(2);