From 57b53211d9719fc19f913c3284c0ba57d21083b8 Mon Sep 17 00:00:00 2001 From: Ruihang Xia Date: Fri, 16 May 2025 14:21:13 +0800 Subject: [PATCH] feat: don't hide atomic write dir (#6109) * feat: don't hidden atomic write dir Signed-off-by: Ruihang Xia * compatible code Signed-off-by: Ruihang Xia * Update src/mito2/src/access_layer.rs Co-authored-by: Yingwen --------- Signed-off-by: Ruihang Xia Co-authored-by: Yingwen --- src/datanode/src/store.rs | 7 ++++++- src/datanode/src/store/fs.rs | 7 ++++++- src/mito2/src/access_layer.rs | 10 +++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/datanode/src/store.rs b/src/datanode/src/store.rs index 6b31c2fdf8..6b9d85f239 100644 --- a/src/datanode/src/store.rs +++ b/src/datanode/src/store.rs @@ -25,6 +25,7 @@ use std::sync::Arc; use std::time::Duration; use common_telemetry::{info, warn}; +use mito2::access_layer::{ATOMIC_WRITE_DIR, OLD_ATOMIC_WRITE_DIR}; use object_store::layers::{LruCacheLayer, RetryInterceptor, RetryLayer}; use object_store::services::Fs; use object_store::util::{join_dir, normalize_dir, with_instrument_layers}; @@ -168,9 +169,13 @@ async fn build_cache_layer( if let Some(path) = cache_path.as_ref() && !path.trim().is_empty() { - let atomic_temp_dir = join_dir(path, ".tmp/"); + let atomic_temp_dir = join_dir(path, ATOMIC_WRITE_DIR); clean_temp_dir(&atomic_temp_dir)?; + // Compatible code. Remove this after a major release. + let old_atomic_temp_dir = join_dir(path, OLD_ATOMIC_WRITE_DIR); + clean_temp_dir(&old_atomic_temp_dir)?; + let cache_store = Fs::default() .root(path) .atomic_write_dir(&atomic_temp_dir) diff --git a/src/datanode/src/store/fs.rs b/src/datanode/src/store/fs.rs index 3ced4d8eab..75e753d4ed 100644 --- a/src/datanode/src/store/fs.rs +++ b/src/datanode/src/store/fs.rs @@ -15,6 +15,7 @@ use std::{fs, path}; use common_telemetry::info; +use mito2::access_layer::{ATOMIC_WRITE_DIR, OLD_ATOMIC_WRITE_DIR}; use object_store::services::Fs; use object_store::util::join_dir; use object_store::ObjectStore; @@ -33,9 +34,13 @@ pub async fn new_fs_object_store( .context(error::CreateDirSnafu { dir: data_home })?; info!("The file storage home is: {}", data_home); - let atomic_write_dir = join_dir(data_home, ".tmp/"); + let atomic_write_dir = join_dir(data_home, ATOMIC_WRITE_DIR); store::clean_temp_dir(&atomic_write_dir)?; + // Compatible code. Remove this after a major release. + let old_atomic_temp_dir = join_dir(data_home, OLD_ATOMIC_WRITE_DIR); + store::clean_temp_dir(&old_atomic_temp_dir)?; + let builder = Fs::default() .root(data_home) .atomic_write_dir(&atomic_write_dir); diff --git a/src/mito2/src/access_layer.rs b/src/mito2/src/access_layer.rs index 3f92c3db68..626f62e1e9 100644 --- a/src/mito2/src/access_layer.rs +++ b/src/mito2/src/access_layer.rs @@ -42,6 +42,10 @@ pub type AccessLayerRef = Arc; /// SST write results. pub type SstInfoArray = SmallVec<[SstInfo; 2]>; +pub const ATOMIC_WRITE_DIR: &str = "tmp/"; +/// For compatibility. Remove this after a major version release. +pub const OLD_ATOMIC_WRITE_DIR: &str = ".tmp/"; + /// A layer to access SST files under the same directory. pub struct AccessLayer { region_dir: String, @@ -214,9 +218,13 @@ pub struct SstWriteRequest { } pub(crate) async fn new_fs_cache_store(root: &str) -> Result { - let atomic_write_dir = join_dir(root, ".tmp/"); + let atomic_write_dir = join_dir(root, ATOMIC_WRITE_DIR); clean_dir(&atomic_write_dir).await?; + // Compatible code. Remove this after a major release. + let old_atomic_temp_dir = join_dir(root, OLD_ATOMIC_WRITE_DIR); + clean_dir(&old_atomic_temp_dir).await?; + let builder = Fs::default().root(root).atomic_write_dir(&atomic_write_dir); let store = ObjectStore::new(builder).context(OpenDalSnafu)?.finish();