From e5313260d04d9eb588621f48cc016f2082e17814 Mon Sep 17 00:00:00 2001 From: zyy17 Date: Mon, 1 Jul 2024 21:10:50 +0800 Subject: [PATCH] refactor: use ObjectStoreManagerRef type in open_compaction_region() and add related unit test (#4238) --- src/mito2/src/compaction/compactor.rs | 4 +-- src/mito2/src/engine/open_test.rs | 42 +++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/mito2/src/compaction/compactor.rs b/src/mito2/src/compaction/compactor.rs index 216dff88e7..062e5423c4 100644 --- a/src/mito2/src/compaction/compactor.rs +++ b/src/mito2/src/compaction/compactor.rs @@ -17,7 +17,7 @@ use std::time::Duration; use api::v1::region::compact_request; use common_telemetry::info; -use object_store::manager::ObjectStoreManager; +use object_store::manager::ObjectStoreManagerRef; use serde::{Deserialize, Serialize}; use smallvec::SmallVec; use snafu::{OptionExt, ResultExt}; @@ -77,7 +77,7 @@ pub struct OpenCompactionRegionRequest { pub async fn open_compaction_region( req: &OpenCompactionRegionRequest, mito_config: &MitoConfig, - object_store_manager: ObjectStoreManager, + object_store_manager: ObjectStoreManagerRef, ) -> Result { let object_store = { let name = &req.region_options.storage; diff --git a/src/mito2/src/engine/open_test.rs b/src/mito2/src/engine/open_test.rs index c30c296480..9e9a9e3486 100644 --- a/src/mito2/src/engine/open_test.rs +++ b/src/mito2/src/engine/open_test.rs @@ -26,8 +26,10 @@ use store_api::region_request::{ use store_api::storage::{RegionId, ScanRequest}; use tokio::sync::oneshot; +use crate::compaction::compactor::{open_compaction_region, OpenCompactionRegionRequest}; use crate::config::MitoConfig; use crate::error; +use crate::region::options::RegionOptions; use crate::test_util::{ build_rows, flush_region, put_rows, reopen_region, rows_schema, CreateRequestBuilder, TestEnv, }; @@ -405,3 +407,43 @@ async fn test_open_region_wait_for_opening_region_err() { StatusCode::RegionNotFound ); } + +#[tokio::test] +async fn test_open_compaction_region() { + let mut env = TestEnv::new(); + let mut mito_config = MitoConfig::default(); + mito_config + .sanitize(&env.data_home().display().to_string()) + .unwrap(); + + let engine = env.create_engine(mito_config.clone()).await; + + let region_id = RegionId::new(1, 1); + let request = CreateRequestBuilder::new().build(); + let region_dir = request.region_dir.clone(); + engine + .handle_request(region_id, RegionRequest::Create(request)) + .await + .unwrap(); + + // Close the region. + engine + .handle_request(region_id, RegionRequest::Close(RegionCloseRequest {})) + .await + .unwrap(); + + let object_store_manager = env.get_object_store_manager().unwrap(); + + let req = OpenCompactionRegionRequest { + region_id, + region_dir: region_dir.clone(), + region_options: RegionOptions::default(), + }; + + let compaction_region = + open_compaction_region(&req, &mito_config, object_store_manager.clone()) + .await + .unwrap(); + + assert_eq!(region_id, compaction_region.region_id); +}