Skip to content

Commit

Permalink
refactor: expose DatanodeBuilder::build_object_store_manager()
Browse files Browse the repository at this point in the history
  • Loading branch information
zyy17 committed Jun 25, 2024
1 parent 4a42371 commit 71b4b2e
Showing 1 changed file with 16 additions and 17 deletions.
33 changes: 16 additions & 17 deletions src/datanode/src/datanode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -270,6 +270,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(
Expand Down Expand Up @@ -329,7 +343,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);
Expand Down Expand Up @@ -432,21 +446,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.
Expand Down

0 comments on commit 71b4b2e

Please sign in to comment.