mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-05 21:02:58 +00:00
refactor: use ObjectStoreManagerRef type in open_compaction_region() and add related unit test (#4238)
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user