supercazzarola

This commit is contained in:
andrew (from workstation) 2020-05-15 21:23:25 +02:00
parent 3383f10d7d
commit 3e5fd40195
2 changed files with 10 additions and 11 deletions

View File

@ -3185,11 +3185,13 @@ FileId FileManager::next_file_id() {
if (!empty_file_ids_.empty()) {
auto res = empty_file_ids_.back();
empty_file_ids_.pop_back();
file_id_insert_time_[res] = std::time(nullptr);
return FileId{res, 0};
}
FileId res(static_cast<int32>(file_id_info_.size()), 0);
// LOG(ERROR) << "NEXT file_id " << res;
auto id = (int32) file_id_info_.size();
FileId res(static_cast<int32>(id), 0);
file_id_insert_time_[id] = std::time(nullptr);
file_id_info_.push_back({});
return res;
}
@ -3697,18 +3699,14 @@ void FileManager::hangup() {
void FileManager::memory_cleanup() {
if (file_id_info_.size() > 1000 && empty_file_ids_.size() < 200) {
empty_file_ids_.clear();
auto time = std::time(nullptr);
while (!queries_container_.empty()) {
auto ids = queries_container_.ids();
for (auto id : ids) {
on_error(id, Status::Error(500, "Request aborted"));
for (unsigned int i = 0; i < file_id_info_.size(); i++) {
if (time - file_id_insert_time_[i] > 60 * 1) {
empty_file_ids_.push_back(i);
file_id_insert_time_[i] = INT64_MAX;
}
}
for (long unsigned int i = file_id_info_.size(); i > 0; i--) {
empty_file_ids_.push_back((int32) i);
}
}
}

View File

@ -552,6 +552,7 @@ class FileManager : public FileLoadManager::Callback {
std::map<FullLocalFileLocation, FileId> local_location_to_file_id_;
std::map<FullGenerateFileLocation, FileId> generate_location_to_file_id_;
std::map<FileDbId, int32> pmc_id_to_file_node_id_;
std::unordered_map<int32, int64> file_id_insert_time_;
vector<FileIdInfo> file_id_info_;
vector<int32> empty_file_ids_;