diff --git a/HISTORY.md b/HISTORY.md index 68b1e0311..c6cd75726 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -9,6 +9,7 @@ * Add DB properties "rocksdb.block-cache-capacity", "rocksdb.block-cache-usage", "rocksdb.block-cache-pinned-usage" to show block cache usage. * Add `Env::LowerThreadPoolCPUPriority(Priority)` method, which lowers the CPU priority of background (esp. compaction) threads to minimize interference with foreground tasks. * Fsync parent directory after deleting a file in delete scheduler. +* Change default value of `bytes_max_delete_chunk` to 0 in NewSstFileManager() as it doesn't work well with checkpoints. ### Bug Fixes * Fsync after writing global seq number to the ingestion file in ExternalSstFileIngestionJob. diff --git a/include/rocksdb/sst_file_manager.h b/include/rocksdb/sst_file_manager.h index c0e109f1e..177657777 100644 --- a/include/rocksdb/sst_file_manager.h +++ b/include/rocksdb/sst_file_manager.h @@ -98,12 +98,13 @@ class SstFileManager { // DeleteScheduler immediately // @param bytes_max_delete_chunk: if a single file is larger than delete chunk, // ftruncate the file by this size each time, rather than dropping the whole -// file. 0 means to always delete the whole file. +// file. 0 means to always delete the whole file. NOTE this options may not +// work well with checkpoints, which relies on file system hard links. extern SstFileManager* NewSstFileManager( Env* env, std::shared_ptr info_log = nullptr, std::string trash_dir = "", int64_t rate_bytes_per_sec = 0, bool delete_existing_trash = true, Status* status = nullptr, double max_trash_db_ratio = 0.25, - uint64_t bytes_max_delete_chunk = 64 * 1024 * 1024); + uint64_t bytes_max_delete_chunk = 0); } // namespace rocksdb