destroy all files that reference main file

This commit is contained in:
andrew (from workstation) 2020-05-17 10:31:09 +02:00
parent 057d20d0c9
commit aa2bdf02d8

View File

@ -3714,29 +3714,29 @@ void FileManager::memory_cleanup() {
is_closed_ = true; is_closed_ = true;
auto time = std::time(nullptr); auto time = std::time(nullptr);
for (unsigned int i = 1; i < file_id_info_.size(); i++) { for (unsigned int i = 0; i < file_id_info_.size(); i++) {
if (time - file_id_insert_time_[i] > 5 /* DELETE FILES OLDER THAN X SECONDS */) { auto &node = file_nodes_[file_id_info_[i].node_id_];
empty_file_ids_.push_back(i);
file_id_insert_time_[i] = INT64_MAX;
auto &node = file_nodes_[file_id_info_[i].node_id_]; if (node != nullptr && ((int32) i) == node->main_file_id_.get()) {
if (time - file_id_insert_time_[i] > 5 /* MAIN FILE TTL */) {
for (auto &file_id : node->file_ids_) {
if (node != nullptr) { /* DESTROY QUERIES */
node->set_upload_priority(0); for (auto &query_id : queries_container_.ids()) {
node->set_download_priority(0); auto query = queries_container_.get(query_id);
node->set_generate_priority(0, 0); if (((int32) i) == query->file_id_.get()) {
} on_error(query_id, Status::Error(500, "FILE_MANAGER_RESTART"));
}
}
file_nodes_[file_id_info_[i].node_id_] = nullptr; /* DESTROY FILE */
file_id_info_[i].node_id_ = 0; try_forget_file_id(file_id);
} }
}
for (auto &empty_id : empty_file_ids_) { /* DESTROY MAIN FILE */
for (auto &query_id : queries_container_.ids()) { file_id_insert_time_[i] = INT64_MAX;
auto query = queries_container_.get(query_id); file_id_info_[i] = FileIdInfo();
if (query->file_id_.get() == empty_id) { file_nodes_[file_id_info_[i].node_id_] = nullptr;
on_error(query_id, Status::Error(500, "FILE_MANAGER_RESTART"));
} }
} }
} }