refactor: use ObjectStoreManagerRef type in open_compaction_region() and add related unit test (#4238)

This commit is contained in:
zyy17
2024-07-01 21:10:50 +08:00
committed by GitHub
parent b69b24a237
commit e5313260d0
2 changed files with 44 additions and 2 deletions

View File

@@ -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<CompactionRegion> {
let object_store = {
let name = &req.region_options.storage;

View File

@@ -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);
}