1use std::time::Duration;
16
17use common_telemetry::warn;
18use serde::{Deserialize, Serialize};
19
20pub(crate) const DEFAULT_FLUSH_METADATA_REGION_INTERVAL: Duration = Duration::from_secs(30);
22
23#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
25pub struct EngineConfig {
26 #[serde(
28 with = "humantime_serde",
29 default = "EngineConfig::default_flush_metadata_region_interval"
30 )]
31 pub flush_metadata_region_interval: Duration,
32}
33
34impl Default for EngineConfig {
35 fn default() -> Self {
36 Self {
37 flush_metadata_region_interval: DEFAULT_FLUSH_METADATA_REGION_INTERVAL,
38 }
39 }
40}
41
42impl EngineConfig {
43 fn default_flush_metadata_region_interval() -> Duration {
44 DEFAULT_FLUSH_METADATA_REGION_INTERVAL
45 }
46
47 pub fn sanitize(&mut self) {
49 if self.flush_metadata_region_interval.is_zero() {
50 warn!(
51 "Flush metadata region interval is zero, override with default value: {:?}. Disable metadata region flush is forbidden.",
52 DEFAULT_FLUSH_METADATA_REGION_INTERVAL
53 );
54 self.flush_metadata_region_interval = DEFAULT_FLUSH_METADATA_REGION_INTERVAL;
55 }
56 }
57}