diff --git a/core/src/db/OngoingFileChecker.cpp b/core/src/db/OngoingFileChecker.cpp index daaf6a2a4fa49e617a20ef09ae8be42847fde22c..308649573d6b7846d2fda0a2bb55009cb93e8c56 100644 --- a/core/src/db/OngoingFileChecker.cpp +++ b/core/src/db/OngoingFileChecker.cpp @@ -108,15 +108,21 @@ OngoingFileChecker::UnmarkOngoingFileNoLock(const meta::TableFileSchema& table_f auto iter = ongoing_files_.find(table_file.table_id_); if (iter != ongoing_files_.end()) { - iter->second.erase(table_file.file_id_); - if (iter->second.empty()) { - ongoing_files_.erase(table_file.table_id_); + auto it_file = iter->second.find(table_file.file_id_); + if (it_file != iter->second.end()) { + it_file->second--; + + ENGINE_LOG_DEBUG << "Unmark ongoing file:" << table_file.file_id_ << " refcount:" << it_file->second; + + if (it_file->second <= 0) { + iter->second.erase(table_file.file_id_); + if (iter->second.empty()) { + ongoing_files_.erase(table_file.table_id_); + } + } } } - ENGINE_LOG_DEBUG << "Mark ongoing file:" << table_file.file_id_ - << " refcount:" << ongoing_files_[table_file.table_id_][table_file.file_id_]; - return Status::OK(); }