Do not reload filters in parallel.
GitOrigin-RevId: 8542d74bd773a58904834a0aea89de41ee470869
This commit is contained in:
parent
25badecb71
commit
e5f0902277
@ -14252,6 +14252,10 @@ void MessagesManager::on_reload_dialog_filters_timeout(void *messages_manager_pt
|
||||
}
|
||||
|
||||
void MessagesManager::reload_dialog_filters() {
|
||||
if (are_dialog_filters_being_reloaded_) {
|
||||
need_dialog_filters_reload_ = true;
|
||||
return;
|
||||
}
|
||||
auto promise = PromiseCreator::lambda(
|
||||
[actor_id = actor_id(this)](Result<vector<tl_object_ptr<telegram_api::dialogFilter>>> r_filters) {
|
||||
send_closure(actor_id, &MessagesManager::on_get_dialog_filters, std::move(r_filters), false);
|
||||
@ -14261,11 +14265,13 @@ void MessagesManager::reload_dialog_filters() {
|
||||
|
||||
void MessagesManager::on_get_dialog_filters(Result<vector<tl_object_ptr<telegram_api::dialogFilter>>> r_filters,
|
||||
bool dummy) {
|
||||
are_dialog_filters_being_reloaded_ = false;
|
||||
if (G()->close_flag()) {
|
||||
return;
|
||||
}
|
||||
if (r_filters.is_error()) {
|
||||
LOG(WARNING) << "Receive error " << r_filters.error() << " for GetDialogFiltersQuery";
|
||||
need_dialog_filters_reload_ = false;
|
||||
schedule_dialog_filters_reload(Random::fast(60, 5 * 60));
|
||||
return;
|
||||
}
|
||||
@ -14368,6 +14374,10 @@ void MessagesManager::on_get_dialog_filters(Result<vector<tl_object_ptr<telegram
|
||||
}
|
||||
schedule_dialog_filters_reload(get_dialog_filters_cache_time());
|
||||
save_dialog_filters();
|
||||
|
||||
if (need_dialog_filters_reload_) {
|
||||
reload_dialog_filters();
|
||||
}
|
||||
}
|
||||
|
||||
vector<DialogId> MessagesManager::search_public_dialogs(const string &query, Promise<Unit> &&promise) {
|
||||
|
@ -2890,6 +2890,8 @@ class MessagesManager : public Actor {
|
||||
std::unordered_map<DialogListId, DialogList, DialogListIdHash> dialog_lists_;
|
||||
std::unordered_map<FolderId, DialogFolder, FolderIdHash> dialog_folders_;
|
||||
|
||||
bool are_dialog_filters_being_reloaded_ = false;
|
||||
bool need_dialog_filters_reload_ = false;
|
||||
int32 dialog_filters_updated_date_ = 0;
|
||||
vector<unique_ptr<DialogFilter>> server_dialog_filters_;
|
||||
vector<unique_ptr<DialogFilter>> dialog_filters_;
|
||||
|
Loading…
x
Reference in New Issue
Block a user