From 71b4b2ef5117c31b183d017ae971fa774d3bc4cd Mon Sep 17 00:00:00 2001 From: zyy17 Date: Tue, 25 Jun 2024 15:03:10 +0800 Subject: [PATCH] refactor: expose DatanodeBuilder::build_object_store_manager() --- src/datanode/src/datanode.rs | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/datanode/src/datanode.rs b/src/datanode/src/datanode.rs index 04dc6c196a61..8ff71eb4e571 100644 --- a/src/datanode/src/datanode.rs +++ b/src/datanode/src/datanode.rs @@ -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, @@ -270,6 +270,20 @@ impl DatanodeBuilder { }) } + /// Builds [ObjectStoreManager] from [StorageConfig]. + pub async fn build_object_store_manager(cfg: &StorageConfig) -> Result { + 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( @@ -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); @@ -432,21 +446,6 @@ impl DatanodeBuilder { .context(OpenLogStoreSnafu) .map(Arc::new) } - - /// Builds [ObjectStoreManager] - async fn build_object_store_manager(opts: &DatanodeOptions) -> Result { - 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.