mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-03 11:52:54 +00:00
refactor: make metadata region option opt-in (#6350)
* refactor: make metadata region option opt-in Signed-off-by: Ning Sun <sunning@greptime.com> * fix: preserve wal_options for metadata region Signed-off-by: Ning Sun <sunning@greptime.com> * Update src/metric-engine/src/engine/create.rs Co-authored-by: Ruihang Xia <waynestxia@gmail.com> --------- Signed-off-by: Ning Sun <sunning@greptime.com> Co-authored-by: Ruihang Xia <waynestxia@gmail.com>
This commit is contained in:
@@ -33,10 +33,7 @@ use store_api::metric_engine_consts::{
|
||||
METADATA_SCHEMA_TIMESTAMP_COLUMN_INDEX, METADATA_SCHEMA_TIMESTAMP_COLUMN_NAME,
|
||||
METADATA_SCHEMA_VALUE_COLUMN_INDEX, METADATA_SCHEMA_VALUE_COLUMN_NAME,
|
||||
};
|
||||
use store_api::mito_engine_options::{
|
||||
APPEND_MODE_KEY, MEMTABLE_PARTITION_TREE_PRIMARY_KEY_ENCODING, MEMTABLE_TYPE, SKIP_WAL_KEY,
|
||||
TTL_KEY,
|
||||
};
|
||||
use store_api::mito_engine_options::{TTL_KEY, WAL_OPTIONS_KEY};
|
||||
use store_api::region_engine::RegionEngine;
|
||||
use store_api::region_request::{AffectedRows, RegionCreateRequest, RegionRequest};
|
||||
use store_api::storage::consts::ReservedColumnId;
|
||||
@@ -476,7 +473,7 @@ impl MetricEngineInner {
|
||||
// concat region dir
|
||||
let metadata_region_dir = join_dir(&request.region_dir, METADATA_REGION_SUBDIR);
|
||||
|
||||
let options = region_options_for_metadata_region(request.options.clone());
|
||||
let options = region_options_for_metadata_region(&request.options);
|
||||
RegionCreateRequest {
|
||||
engine: MITO_ENGINE_NAME.to_string(),
|
||||
column_metadatas: vec![
|
||||
@@ -600,17 +597,16 @@ fn parse_physical_region_id(request: &RegionCreateRequest) -> Result<RegionId> {
|
||||
|
||||
/// Creates the region options for metadata region in metric engine.
|
||||
pub(crate) fn region_options_for_metadata_region(
|
||||
mut original: HashMap<String, String>,
|
||||
original: &HashMap<String, String>,
|
||||
) -> HashMap<String, String> {
|
||||
// TODO(ruihang, weny): add whitelist for metric engine options.
|
||||
original.remove(APPEND_MODE_KEY);
|
||||
// Don't allow to set primary key encoding for metadata region.
|
||||
original.remove(MEMTABLE_PARTITION_TREE_PRIMARY_KEY_ENCODING);
|
||||
// Don't allow to set memtable type for metadata region.
|
||||
original.remove(MEMTABLE_TYPE);
|
||||
original.insert(TTL_KEY.to_string(), FOREVER.to_string());
|
||||
original.remove(SKIP_WAL_KEY);
|
||||
original
|
||||
let mut metadata_region_options = HashMap::new();
|
||||
metadata_region_options.insert(TTL_KEY.to_string(), FOREVER.to_string());
|
||||
|
||||
if let Some(wal_options) = original.get(WAL_OPTIONS_KEY) {
|
||||
metadata_region_options.insert(WAL_OPTIONS_KEY.to_string(), wal_options.to_string());
|
||||
}
|
||||
|
||||
metadata_region_options
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
@@ -167,7 +167,7 @@ impl MetricEngineInner {
|
||||
let metadata_region_dir = join_dir(&request.region_dir, METADATA_REGION_SUBDIR);
|
||||
let data_region_dir = join_dir(&request.region_dir, DATA_REGION_SUBDIR);
|
||||
|
||||
let metadata_region_options = region_options_for_metadata_region(request.options.clone());
|
||||
let metadata_region_options = region_options_for_metadata_region(&request.options);
|
||||
let open_metadata_region_request = RegionOpenRequest {
|
||||
region_dir: metadata_region_dir,
|
||||
options: metadata_region_options,
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
//! Option keys for the mito engine.
|
||||
//! We define them in this mod so the create parser can use it to validate table options.
|
||||
|
||||
use common_wal::options::WAL_OPTIONS_KEY;
|
||||
|
||||
/// Option key for all WAL options.
|
||||
pub use common_wal::options::WAL_OPTIONS_KEY;
|
||||
/// Option key for append mode.
|
||||
pub const APPEND_MODE_KEY: &str = "append_mode";
|
||||
/// Option key for merge mode.
|
||||
|
||||
Reference in New Issue
Block a user