diff --git a/core/src/db/DBImpl.cpp b/core/src/db/DBImpl.cpp index 9a59281d83e0def17abc600d2896799b635c0b75..9d10dd5a2ab1b47312c70bf3246646e18c50fd7c 100644 --- a/core/src/db/DBImpl.cpp +++ b/core/src/db/DBImpl.cpp @@ -687,7 +687,10 @@ DBImpl::Compact(const std::string& table_id) { OngoingFileChecker::GetInstance().MarkOngoingFiles(files_to_compact); Status compact_status; - for (auto& file : files_to_compact) { + for (meta::TableFilesSchema::iterator iter = files_to_compact.begin(); iter != files_to_compact.end();) { + meta::TableFileSchema file = *iter; + iter = files_to_compact.erase(iter); + // Check if the segment needs compacting std::string segment_dir; utils::GetParentPath(file.location_, segment_dir); @@ -724,6 +727,8 @@ DBImpl::Compact(const std::string& table_id) { compact_status = status; break; // meta error, could not go on } + + OngoingFileChecker::GetInstance().UnmarkOngoingFile(file); } OngoingFileChecker::GetInstance().UnmarkOngoingFiles(files_to_compact);