supercazzarola
This commit is contained in:
parent
3383f10d7d
commit
3e5fd40195
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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_;
|
||||
|
|
Reference in New Issue