diff --git a/config/config.md b/config/config.md index d50501b040..07301b79a4 100644 --- a/config/config.md +++ b/config/config.md @@ -132,10 +132,10 @@ | `region_engine.mito.vector_cache_size` | String | Auto | Cache size for vectors and arrow arrays. Setting it to 0 to disable the cache.
If not set, it's default to 1/16 of OS memory with a max limitation of 512MB. | | `region_engine.mito.page_cache_size` | String | Auto | Cache size for pages of SST row groups. Setting it to 0 to disable the cache.
If not set, it's default to 1/8 of OS memory. | | `region_engine.mito.selector_result_cache_size` | String | Auto | Cache size for time series selector (e.g. `last_value()`). Setting it to 0 to disable the cache.
If not set, it's default to 1/16 of OS memory with a max limitation of 512MB. | -| `region_engine.mito.enable_experimental_write_cache` | Bool | `false` | Whether to enable the experimental write cache, it's enabled by default when using object storage. It is recommended to enable it when using object storage for better performance. | -| `region_engine.mito.experimental_write_cache_path` | String | `""` | File system path for write cache, defaults to `{data_home}/object_cache/write`. | -| `region_engine.mito.experimental_write_cache_size` | String | `5GiB` | Capacity for write cache. If your disk space is sufficient, it is recommended to set it larger. | -| `region_engine.mito.experimental_write_cache_ttl` | String | Unset | TTL for write cache. | +| `region_engine.mito.enable_write_cache` | Bool | `false` | Whether to enable the write cache, it's enabled by default when using object storage. It is recommended to enable it when using object storage for better performance. | +| `region_engine.mito.write_cache_path` | String | `""` | File system path for write cache, defaults to `{data_home}/object_cache/write`. | +| `region_engine.mito.write_cache_size` | String | `5GiB` | Capacity for write cache. If your disk space is sufficient, it is recommended to set it larger. | +| `region_engine.mito.write_cache_ttl` | String | Unset | TTL for write cache. | | `region_engine.mito.sst_write_buffer_size` | String | `8MB` | Buffer size for SST writing. | | `region_engine.mito.parallel_scan_channel_size` | Integer | `32` | Capacity of the channel to send data from parallel scan tasks to the main task. | | `region_engine.mito.allow_stale_entries` | Bool | `false` | Whether to allow stale WAL entries read during replay. | @@ -466,10 +466,10 @@ | `region_engine.mito.vector_cache_size` | String | Auto | Cache size for vectors and arrow arrays. Setting it to 0 to disable the cache.
If not set, it's default to 1/16 of OS memory with a max limitation of 512MB. | | `region_engine.mito.page_cache_size` | String | Auto | Cache size for pages of SST row groups. Setting it to 0 to disable the cache.
If not set, it's default to 1/8 of OS memory. | | `region_engine.mito.selector_result_cache_size` | String | Auto | Cache size for time series selector (e.g. `last_value()`). Setting it to 0 to disable the cache.
If not set, it's default to 1/16 of OS memory with a max limitation of 512MB. | -| `region_engine.mito.enable_experimental_write_cache` | Bool | `false` | Whether to enable the experimental write cache, it's enabled by default when using object storage. It is recommended to enable it when using object storage for better performance. | -| `region_engine.mito.experimental_write_cache_path` | String | `""` | File system path for write cache, defaults to `{data_home}`. | -| `region_engine.mito.experimental_write_cache_size` | String | `5GiB` | Capacity for write cache. If your disk space is sufficient, it is recommended to set it larger. | -| `region_engine.mito.experimental_write_cache_ttl` | String | Unset | TTL for write cache. | +| `region_engine.mito.enable_write_cache` | Bool | `false` | Whether to enable the write cache, it's enabled by default when using object storage. It is recommended to enable it when using object storage for better performance. | +| `region_engine.mito.write_cache_path` | String | `""` | File system path for write cache, defaults to `{data_home}`. | +| `region_engine.mito.write_cache_size` | String | `5GiB` | Capacity for write cache. If your disk space is sufficient, it is recommended to set it larger. | +| `region_engine.mito.write_cache_ttl` | String | Unset | TTL for write cache. | | `region_engine.mito.sst_write_buffer_size` | String | `8MB` | Buffer size for SST writing. | | `region_engine.mito.parallel_scan_channel_size` | Integer | `32` | Capacity of the channel to send data from parallel scan tasks to the main task. | | `region_engine.mito.allow_stale_entries` | Bool | `false` | Whether to allow stale WAL entries read during replay. | diff --git a/config/datanode.example.toml b/config/datanode.example.toml index c15f3b1c26..a329cb4f3a 100644 --- a/config/datanode.example.toml +++ b/config/datanode.example.toml @@ -475,18 +475,18 @@ auto_flush_interval = "1h" ## @toml2docs:none-default="Auto" #+ selector_result_cache_size = "512MB" -## Whether to enable the experimental write cache, it's enabled by default when using object storage. It is recommended to enable it when using object storage for better performance. -enable_experimental_write_cache = false +## Whether to enable the write cache, it's enabled by default when using object storage. It is recommended to enable it when using object storage for better performance. +enable_write_cache = false ## File system path for write cache, defaults to `{data_home}`. -experimental_write_cache_path = "" +write_cache_path = "" ## Capacity for write cache. If your disk space is sufficient, it is recommended to set it larger. -experimental_write_cache_size = "5GiB" +write_cache_size = "5GiB" ## TTL for write cache. ## @toml2docs:none-default -experimental_write_cache_ttl = "8h" +write_cache_ttl = "8h" ## Buffer size for SST writing. sst_write_buffer_size = "8MB" diff --git a/config/standalone.example.toml b/config/standalone.example.toml index ad89cea76d..e1bc4a90b9 100644 --- a/config/standalone.example.toml +++ b/config/standalone.example.toml @@ -518,18 +518,18 @@ auto_flush_interval = "1h" ## @toml2docs:none-default="Auto" #+ selector_result_cache_size = "512MB" -## Whether to enable the experimental write cache, it's enabled by default when using object storage. It is recommended to enable it when using object storage for better performance. -enable_experimental_write_cache = false +## Whether to enable the write cache, it's enabled by default when using object storage. It is recommended to enable it when using object storage for better performance. +enable_write_cache = false ## File system path for write cache, defaults to `{data_home}/object_cache/write`. -experimental_write_cache_path = "" +write_cache_path = "" ## Capacity for write cache. If your disk space is sufficient, it is recommended to set it larger. -experimental_write_cache_size = "5GiB" +write_cache_size = "5GiB" ## TTL for write cache. ## @toml2docs:none-default -experimental_write_cache_ttl = "8h" +write_cache_ttl = "8h" ## Buffer size for SST writing. sst_write_buffer_size = "8MB" diff --git a/src/cmd/tests/load_config_test.rs b/src/cmd/tests/load_config_test.rs index c5f1111d37..e142a0b4a6 100644 --- a/src/cmd/tests/load_config_test.rs +++ b/src/cmd/tests/load_config_test.rs @@ -69,7 +69,7 @@ fn test_load_datanode_example_config() { region_engine: vec![ RegionEngineConfig::Mito(MitoConfig { auto_flush_interval: Duration::from_secs(3600), - experimental_write_cache_ttl: Some(Duration::from_secs(60 * 60 * 8)), + write_cache_ttl: Some(Duration::from_secs(60 * 60 * 8)), ..Default::default() }), RegionEngineConfig::File(EngineConfig {}), @@ -203,7 +203,7 @@ fn test_load_standalone_example_config() { region_engine: vec![ RegionEngineConfig::Mito(MitoConfig { auto_flush_interval: Duration::from_secs(3600), - experimental_write_cache_ttl: Some(Duration::from_secs(60 * 60 * 8)), + write_cache_ttl: Some(Duration::from_secs(60 * 60 * 8)), ..Default::default() }), RegionEngineConfig::File(EngineConfig {}), diff --git a/src/datanode/src/datanode.rs b/src/datanode/src/datanode.rs index b3763801b4..01e1e072c0 100644 --- a/src/datanode/src/datanode.rs +++ b/src/datanode/src/datanode.rs @@ -433,8 +433,8 @@ impl DatanodeBuilder { ) -> Result { if opts.storage.is_object_storage() { // Enable the write cache when setting object storage - config.enable_experimental_write_cache = true; - info!("Configured 'enable_experimental_write_cache=true' for mito engine."); + config.enable_write_cache = true; + info!("Configured 'enable_write_cache=true' for mito engine."); } let mito_engine = match &opts.wal { diff --git a/src/mito2/src/config.rs b/src/mito2/src/config.rs index 6c74efcc8a..6208424a41 100644 --- a/src/mito2/src/config.rs +++ b/src/mito2/src/config.rs @@ -93,15 +93,15 @@ pub struct MitoConfig { pub page_cache_size: ReadableSize, /// Cache size for time series selector (e.g. `last_value()`). Setting it to 0 to disable the cache. pub selector_result_cache_size: ReadableSize, - /// Whether to enable the experimental write cache. - pub enable_experimental_write_cache: bool, + /// Whether to enable the write cache. + pub enable_write_cache: bool, /// File system path for write cache dir's root, defaults to `{data_home}`. - pub experimental_write_cache_path: String, + pub write_cache_path: String, /// Capacity for write cache. - pub experimental_write_cache_size: ReadableSize, + pub write_cache_size: ReadableSize, /// TTL for write cache. #[serde(with = "humantime_serde")] - pub experimental_write_cache_ttl: Option, + pub write_cache_ttl: Option, // Other configs: /// Buffer size for SST writing. @@ -147,10 +147,10 @@ impl Default for MitoConfig { vector_cache_size: ReadableSize::mb(512), page_cache_size: ReadableSize::mb(512), selector_result_cache_size: ReadableSize::mb(512), - enable_experimental_write_cache: false, - experimental_write_cache_path: String::new(), - experimental_write_cache_size: ReadableSize::gb(5), - experimental_write_cache_ttl: None, + enable_write_cache: false, + write_cache_path: String::new(), + write_cache_size: ReadableSize::gb(5), + write_cache_ttl: None, sst_write_buffer_size: DEFAULT_WRITE_BUFFER_SIZE, parallel_scan_channel_size: DEFAULT_SCAN_CHANNEL_SIZE, allow_stale_entries: false, @@ -234,8 +234,8 @@ impl MitoConfig { } // Sets write cache path if it is empty. - if self.experimental_write_cache_path.trim().is_empty() { - self.experimental_write_cache_path = data_home.to_string(); + if self.write_cache_path.trim().is_empty() { + self.write_cache_path = data_home.to_string(); } self.index.sanitize(data_home, &self.inverted_index)?; @@ -268,7 +268,7 @@ impl MitoConfig { self.selector_result_cache_size = mem_cache_size; } - /// Enable experimental write cache. + /// Enable write cache. #[cfg(test)] pub fn enable_write_cache( mut self, @@ -276,10 +276,10 @@ impl MitoConfig { size: ReadableSize, ttl: Option, ) -> Self { - self.enable_experimental_write_cache = true; - self.experimental_write_cache_path = path; - self.experimental_write_cache_size = size; - self.experimental_write_cache_ttl = ttl; + self.enable_write_cache = true; + self.write_cache_path = path; + self.write_cache_size = size; + self.write_cache_ttl = ttl; self } } diff --git a/src/mito2/src/engine/edit_region_test.rs b/src/mito2/src/engine/edit_region_test.rs index bb9588f1cc..2b66422f06 100644 --- a/src/mito2/src/engine/edit_region_test.rs +++ b/src/mito2/src/engine/edit_region_test.rs @@ -140,7 +140,7 @@ async fn test_edit_region_fill_cache() { .create_engine_with( MitoConfig { // Write cache must be enabled to download the ingested SST file. - enable_experimental_write_cache: true, + enable_write_cache: true, ..Default::default() }, None, diff --git a/src/mito2/src/worker.rs b/src/mito2/src/worker.rs index 62ad59f070..55dc11521f 100644 --- a/src/mito2/src/worker.rs +++ b/src/mito2/src/worker.rs @@ -365,23 +365,20 @@ async fn write_cache_from_config( puffin_manager_factory: PuffinManagerFactory, intermediate_manager: IntermediateManager, ) -> Result> { - if !config.enable_experimental_write_cache { + if !config.enable_write_cache { return Ok(None); } - // TODO(yingwen): Remove this and document the config once the write cache is ready. - warn!("Write cache is an experimental feature"); - - tokio::fs::create_dir_all(Path::new(&config.experimental_write_cache_path)) + tokio::fs::create_dir_all(Path::new(&config.write_cache_path)) .await .context(CreateDirSnafu { - dir: &config.experimental_write_cache_path, + dir: &config.write_cache_path, })?; let cache = WriteCache::new_fs( - &config.experimental_write_cache_path, - config.experimental_write_cache_size, - config.experimental_write_cache_ttl, + &config.write_cache_path, + config.write_cache_size, + config.write_cache_ttl, puffin_manager_factory, intermediate_manager, ) diff --git a/tests-integration/tests/http.rs b/tests-integration/tests/http.rs index f81cd7a4ad..7793c26d19 100644 --- a/tests-integration/tests/http.rs +++ b/tests-integration/tests/http.rs @@ -928,9 +928,9 @@ worker_request_batch_size = 64 manifest_checkpoint_distance = 10 compress_manifest = false auto_flush_interval = "30m" -enable_experimental_write_cache = false -experimental_write_cache_path = "" -experimental_write_cache_size = "5GiB" +enable_write_cache = false +write_cache_path = "" +write_cache_size = "5GiB" sst_write_buffer_size = "8MiB" parallel_scan_channel_size = 32 allow_stale_entries = false