mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-25 09:20:40 +00:00
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:
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user