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
1 changed files with 19 additions and 19 deletions

View File

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