Fix data ttl

This commit is contained in:
Andrea Cavalli 2020-10-21 21:36:13 +02:00
parent f9c9f2bd59
commit 6babc009d7
2 changed files with 7 additions and 5 deletions

View File

@ -14533,6 +14533,8 @@ void ContactsManager::get_current_state(vector<td_api::object_ptr<td_api::Update
void ContactsManager::memory_cleanup() {
std::lock_guard<std::shared_timed_mutex> writerLock(memory_cleanup_mutex);
auto time = std::time(nullptr);
auto user_ttl = !G()->shared_config().get_option_integer("delete_user_reference_after_seconds", 3600);
auto chat_ttl = !G()->shared_config().get_option_integer("delete_chat_reference_after_seconds", 3600);
@ -14543,7 +14545,7 @@ void ContactsManager::memory_cleanup() {
//auto &user = it->second;
auto user_id = it->first;
auto is_invalid = user_id.get_time() > user_ttl;
auto is_invalid = time - user_id.get_time() > user_ttl || user_id.get_time() > time;
if (is_invalid) {
user_id.reset_time();
@ -14576,7 +14578,7 @@ void ContactsManager::memory_cleanup() {
//auto &chat = it->second;
auto chat_id = it->first;
auto is_invalid = chat_id.get_time() > chat_ttl;
auto is_invalid = time - chat_id.get_time() > chat_ttl || chat_id.get_time() > time;
if (is_invalid) {
chat_id.reset_time();
@ -14604,7 +14606,7 @@ void ContactsManager::memory_cleanup() {
//auto &channel = it->second;
auto channel_id = it->first;
auto is_invalid = channel_id.get_time() > chat_ttl;
auto is_invalid = time - channel_id.get_time() > chat_ttl || channel_id.get_time() > time;
if (is_invalid) {
channel_id.reset_time();

View File

@ -3882,7 +3882,7 @@ void FileManager::memory_cleanup() {
if (find_node != file_nodes_.end()) {
auto &node = find_node->second;
if (time - node->main_file_id_.get_time() > file_ttl) {
if (time - node->main_file_id_.get_time() > file_ttl || node->main_file_id_.get_time() > time) {
auto can_reset = node->download_priority_ == 0;
can_reset &= node->generate_download_priority_ == 0;
can_reset &= node->download_id_ == 0;
@ -3895,7 +3895,7 @@ void FileManager::memory_cleanup() {
if (find_file != file_id_info_.end()) {
auto &file = find_file->second;
can_reset &= file.download_priority_ == 0;
can_reset &= time - file_ids_it->get_time() > file_ttl;
can_reset &= time - file_ids_it->get_time() > file_ttl || file_ids_it->get_time() > time;
}
file_ids_it++;
}