Remove unneded UpdatesManager::get_state.
GitOrigin-RevId: d95a262233bd5959950eab8159a589a689d8a4b5
This commit is contained in:
parent
044a3a6f14
commit
e9bb986d9c
@ -6688,7 +6688,7 @@ void MessagesManager::after_get_difference() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
LOG(ERROR) << "Receive updateMessageId from " << it.second << " to " << it.first
|
LOG(ERROR) << "Receive updateMessageId from " << it.second << " to " << it.first
|
||||||
<< " but not receive corresponding message. " << td_->updates_manager_->get_state();
|
<< " but not receive corresponding message";
|
||||||
if (dialog_id.get_type() != DialogType::Channel) {
|
if (dialog_id.get_type() != DialogType::Channel) {
|
||||||
dump_debug_message_op(get_dialog(dialog_id));
|
dump_debug_message_op(get_dialog(dialog_id));
|
||||||
}
|
}
|
||||||
@ -8347,7 +8347,7 @@ void MessagesManager::read_history_inbox(DialogId dialog_id, MessageId max_messa
|
|||||||
dialog_id.get_type() != DialogType::Channel && !running_get_difference_)
|
dialog_id.get_type() != DialogType::Channel && !running_get_difference_)
|
||||||
<< "Receive read inbox update up to unknown " << max_message_id << " in " << dialog_id << " from " << source
|
<< "Receive read inbox update up to unknown " << max_message_id << " in " << dialog_id << " from " << source
|
||||||
<< ". Last new is " << d->last_new_message_id << ", unread_count = " << unread_count
|
<< ". Last new is " << d->last_new_message_id << ", unread_count = " << unread_count
|
||||||
<< ". Possible only for deleted incoming message. " << td_->updates_manager_->get_state();
|
<< ". Possible only for deleted incoming message";
|
||||||
|
|
||||||
if (dialog_id.get_type() == DialogType::SecretChat) {
|
if (dialog_id.get_type() == DialogType::SecretChat) {
|
||||||
ttl_read_history(d, false, max_message_id, d->last_read_inbox_message_id, Time::now());
|
ttl_read_history(d, false, max_message_id, d->last_read_inbox_message_id, Time::now());
|
||||||
@ -8413,8 +8413,7 @@ void MessagesManager::read_history_outbox(DialogId dialog_id, MessageId max_mess
|
|||||||
LOG_IF(INFO, d->last_new_message_id.is_valid() && max_message_id.get() > d->last_new_message_id.get() &&
|
LOG_IF(INFO, d->last_new_message_id.is_valid() && max_message_id.get() > d->last_new_message_id.get() &&
|
||||||
dialog_id.get_type() != DialogType::Channel)
|
dialog_id.get_type() != DialogType::Channel)
|
||||||
<< "Receive read outbox update about unknown " << max_message_id << " in " << dialog_id << " with last new "
|
<< "Receive read outbox update about unknown " << max_message_id << " in " << dialog_id << " with last new "
|
||||||
<< d->last_new_message_id << ". Possible only for deleted outgoing message. "
|
<< d->last_new_message_id << ". Possible only for deleted outgoing message";
|
||||||
<< td_->updates_manager_->get_state();
|
|
||||||
|
|
||||||
if (dialog_id.get_type() == DialogType::SecretChat) {
|
if (dialog_id.get_type() == DialogType::SecretChat) {
|
||||||
double server_time = Time::now();
|
double server_time = Time::now();
|
||||||
@ -19830,8 +19829,7 @@ FullMessageId MessagesManager::on_send_message_success(int64 random_id, MessageI
|
|||||||
auto it = being_sent_messages_.find(random_id);
|
auto it = being_sent_messages_.find(random_id);
|
||||||
if (it == being_sent_messages_.end()) {
|
if (it == being_sent_messages_.end()) {
|
||||||
LOG(ERROR) << "Result from sendMessage for " << new_message_id << " with random_id " << random_id << " sent at "
|
LOG(ERROR) << "Result from sendMessage for " << new_message_id << " with random_id " << random_id << " sent at "
|
||||||
<< date << " comes from " << source << " after updateNewMessageId, but was not discarded by pts. "
|
<< date << " comes from " << source << " after updateNewMessageId, but was not discarded by pts";
|
||||||
<< td_->updates_manager_->get_state();
|
|
||||||
if (debug_being_sent_messages_.count(random_id) == 0) {
|
if (debug_being_sent_messages_.count(random_id) == 0) {
|
||||||
LOG(ERROR) << "Message with random_id " << random_id << " was mot sent";
|
LOG(ERROR) << "Message with random_id " << random_id << " was mot sent";
|
||||||
return {};
|
return {};
|
||||||
@ -19856,7 +19854,7 @@ FullMessageId MessagesManager::on_send_message_success(int64 random_id, MessageI
|
|||||||
<< (m->forward_info == nullptr ? " not" : "") << " forwarded " << new_message_id
|
<< (m->forward_info == nullptr ? " not" : "") << " forwarded " << new_message_id
|
||||||
<< " with content of the type " << m->content->get_type() << " in " << dialog_id
|
<< " with content of the type " << m->content->get_type() << " in " << dialog_id
|
||||||
<< " comes after updateNewMessageId, current last new is " << d->last_new_message_id << ", last is "
|
<< " comes after updateNewMessageId, current last new is " << d->last_new_message_id << ", last is "
|
||||||
<< d->last_message_id << ". " << td_->updates_manager_->get_state();
|
<< d->last_message_id;
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22373,8 +22371,7 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
|
|||||||
LOG(ERROR) << "Receive again " << (message->is_outgoing ? "outgoing" : "incoming")
|
LOG(ERROR) << "Receive again " << (message->is_outgoing ? "outgoing" : "incoming")
|
||||||
<< (message->forward_info == nullptr ? " not" : "") << " forwarded " << message_id
|
<< (message->forward_info == nullptr ? " not" : "") << " forwarded " << message_id
|
||||||
<< " with content of type " << message_content_type << " in " << dialog_id << " from " << source
|
<< " with content of type " << message_content_type << " in " << dialog_id << " from " << source
|
||||||
<< ", current last new is " << d->last_new_message_id << ", last is " << d->last_message_id << ". "
|
<< ", current last new is " << d->last_new_message_id << ", last is " << d->last_message_id;
|
||||||
<< td_->updates_manager_->get_state();
|
|
||||||
dump_debug_message_op(d, 1);
|
dump_debug_message_op(d, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -187,52 +187,11 @@ void UpdatesManager::fill_gap(void *td, const char *source) {
|
|||||||
CHECK(td != nullptr);
|
CHECK(td != nullptr);
|
||||||
auto updates_manager = static_cast<Td *>(td)->updates_manager_.get();
|
auto updates_manager = static_cast<Td *>(td)->updates_manager_.get();
|
||||||
|
|
||||||
LOG(WARNING) << "Filling gap in " << source << " by running getDifference. " << updates_manager->get_state();
|
LOG(WARNING) << "Filling gap in " << source << " by running getDifference";
|
||||||
|
|
||||||
updates_manager->get_difference("fill_gap");
|
updates_manager->get_difference("fill_gap");
|
||||||
}
|
}
|
||||||
|
|
||||||
string UpdatesManager::get_state() const {
|
|
||||||
char buff[1024];
|
|
||||||
StringBuilder sb(MutableSlice{buff, sizeof(buff)});
|
|
||||||
sb << "UpdatesManager is in state ";
|
|
||||||
switch (state_.type) {
|
|
||||||
case State::Type::General:
|
|
||||||
sb << "General";
|
|
||||||
break;
|
|
||||||
case State::Type::RunningGetUpdatesState:
|
|
||||||
sb << "RunningGetUpdatesState";
|
|
||||||
break;
|
|
||||||
case State::Type::RunningGetDifference:
|
|
||||||
sb << "RunningGetDifference";
|
|
||||||
break;
|
|
||||||
case State::Type::ApplyingDifference:
|
|
||||||
sb << "ApplyingDifference";
|
|
||||||
break;
|
|
||||||
case State::Type::ApplyingDifferenceSlice:
|
|
||||||
sb << "ApplyingDifferenceSlice";
|
|
||||||
break;
|
|
||||||
case State::Type::ApplyingUpdates:
|
|
||||||
sb << "ApplyingUpdates";
|
|
||||||
break;
|
|
||||||
case State::Type::ApplyingSeqUpdates:
|
|
||||||
sb << "ApplyingSeqUpdates";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
UNREACHABLE();
|
|
||||||
}
|
|
||||||
sb << " with pts = " << state_.pts << ", qts = " << state_.qts << " and date = " << state_.date;
|
|
||||||
CHECK(!sb.is_error());
|
|
||||||
return sb.as_cslice().str();
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdatesManager::set_state(State::Type type) {
|
|
||||||
state_.type = type;
|
|
||||||
state_.pts = get_pts();
|
|
||||||
state_.qts = qts_;
|
|
||||||
state_.date = date_;
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdatesManager::get_difference(const char *source) {
|
void UpdatesManager::get_difference(const char *source) {
|
||||||
if (get_pts() == -1) {
|
if (get_pts() == -1) {
|
||||||
init_state();
|
init_state();
|
||||||
@ -255,8 +214,6 @@ void UpdatesManager::get_difference(const char *source) {
|
|||||||
|
|
||||||
td_->create_handler<GetDifferenceQuery>()->send();
|
td_->create_handler<GetDifferenceQuery>()->send();
|
||||||
last_get_difference_pts_ = get_pts();
|
last_get_difference_pts_ = get_pts();
|
||||||
|
|
||||||
set_state(State::Type::RunningGetDifference);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdatesManager::before_get_difference(bool is_initial) {
|
void UpdatesManager::before_get_difference(bool is_initial) {
|
||||||
@ -302,7 +259,7 @@ Promise<> UpdatesManager::set_pts(int32 pts, const char *source) {
|
|||||||
Promise<> result;
|
Promise<> result;
|
||||||
if (pts > get_pts() || (0 < pts && pts < get_pts() - 399999)) { // pts can only go up or drop cardinally
|
if (pts > get_pts() || (0 < pts && pts < get_pts() - 399999)) { // pts can only go up or drop cardinally
|
||||||
if (pts < get_pts() - 399999) {
|
if (pts < get_pts() - 399999) {
|
||||||
LOG(WARNING) << "Pts decreases from " << get_pts() << " to " << pts << " from " << source << ". " << get_state();
|
LOG(WARNING) << "Pts decreases from " << get_pts() << " to " << pts << " from " << source;
|
||||||
} else {
|
} else {
|
||||||
LOG(INFO) << "Update pts from " << get_pts() << " to " << pts << " from " << source;
|
LOG(INFO) << "Update pts from " << get_pts() << " to " << pts << " from " << source;
|
||||||
}
|
}
|
||||||
@ -313,8 +270,7 @@ Promise<> UpdatesManager::set_pts(int32 pts, const char *source) {
|
|||||||
schedule_get_difference("set_pts");
|
schedule_get_difference("set_pts");
|
||||||
}
|
}
|
||||||
} else if (pts < get_pts()) {
|
} else if (pts < get_pts()) {
|
||||||
LOG(ERROR) << "Receive wrong pts = " << pts << " from " << source << ". Current pts = " << get_pts() << ". "
|
LOG(ERROR) << "Receive wrong pts = " << pts << " from " << source << ". Current pts = " << get_pts();
|
||||||
<< get_state();
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -326,7 +282,7 @@ void UpdatesManager::set_qts(int32 qts) {
|
|||||||
qts_ = qts;
|
qts_ = qts;
|
||||||
G()->td_db()->get_binlog_pmc()->set("updates.qts", to_string(qts));
|
G()->td_db()->get_binlog_pmc()->set("updates.qts", to_string(qts));
|
||||||
} else if (qts < qts_) {
|
} else if (qts < qts_) {
|
||||||
LOG(ERROR) << "Receive wrong qts = " << qts << ". Current qts = " << qts_ << ". " << get_state();
|
LOG(ERROR) << "Receive wrong qts = " << qts << ". Current qts = " << qts_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -362,7 +318,7 @@ void UpdatesManager::set_date(int32 date, bool from_update, string date_source)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOG(ERROR) << "Receive wrong by " << (date_ - date) << " date = " << date << " from " << date_source
|
LOG(ERROR) << "Receive wrong by " << (date_ - date) << " date = " << date << " from " << date_source
|
||||||
<< ". Current date = " << date_ << " from " << date_source_ << ". " << get_state();
|
<< ". Current date = " << date_ << " from " << date_source_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -919,8 +875,6 @@ void UpdatesManager::init_state() {
|
|||||||
before_get_difference(true);
|
before_get_difference(true);
|
||||||
|
|
||||||
td_->create_handler<GetUpdatesStateQuery>()->send();
|
td_->create_handler<GetUpdatesStateQuery>()->send();
|
||||||
|
|
||||||
set_state(State::Type::RunningGetUpdatesState);
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1014,8 +968,6 @@ void UpdatesManager::on_get_difference(tl_object_ptr<telegram_api::updates_Diffe
|
|||||||
td_->contacts_manager_->on_get_users(std::move(difference->users_), "updates.difference");
|
td_->contacts_manager_->on_get_users(std::move(difference->users_), "updates.difference");
|
||||||
td_->contacts_manager_->on_get_chats(std::move(difference->chats_), "updates.difference");
|
td_->contacts_manager_->on_get_chats(std::move(difference->chats_), "updates.difference");
|
||||||
|
|
||||||
set_state(State::Type::ApplyingDifference);
|
|
||||||
|
|
||||||
process_get_difference_updates(std::move(difference->new_messages_),
|
process_get_difference_updates(std::move(difference->new_messages_),
|
||||||
std::move(difference->new_encrypted_messages_), difference->state_->qts_,
|
std::move(difference->new_encrypted_messages_), difference->state_->qts_,
|
||||||
std::move(difference->other_updates_));
|
std::move(difference->other_updates_));
|
||||||
@ -1039,8 +991,6 @@ void UpdatesManager::on_get_difference(tl_object_ptr<telegram_api::updates_Diffe
|
|||||||
td_->contacts_manager_->on_get_users(std::move(difference->users_), "updates.differenceSlice");
|
td_->contacts_manager_->on_get_users(std::move(difference->users_), "updates.differenceSlice");
|
||||||
td_->contacts_manager_->on_get_chats(std::move(difference->chats_), "updates.differenceSlice");
|
td_->contacts_manager_->on_get_chats(std::move(difference->chats_), "updates.differenceSlice");
|
||||||
|
|
||||||
set_state(State::Type::ApplyingDifferenceSlice);
|
|
||||||
|
|
||||||
process_get_difference_updates(std::move(difference->new_messages_),
|
process_get_difference_updates(std::move(difference->new_messages_),
|
||||||
std::move(difference->new_encrypted_messages_),
|
std::move(difference->new_encrypted_messages_),
|
||||||
difference->intermediate_state_->qts_, std::move(difference->other_updates_));
|
difference->intermediate_state_->qts_, std::move(difference->other_updates_));
|
||||||
@ -1073,7 +1023,6 @@ void UpdatesManager::on_get_difference(tl_object_ptr<telegram_api::updates_Diffe
|
|||||||
void UpdatesManager::after_get_difference() {
|
void UpdatesManager::after_get_difference() {
|
||||||
CHECK(!running_get_difference_);
|
CHECK(!running_get_difference_);
|
||||||
send_closure(td_->secret_chats_manager_, &SecretChatsManager::after_get_difference);
|
send_closure(td_->secret_chats_manager_, &SecretChatsManager::after_get_difference);
|
||||||
auto saved_state = state_;
|
|
||||||
|
|
||||||
retry_timeout_.cancel_timeout();
|
retry_timeout_.cancel_timeout();
|
||||||
retry_time_ = 1;
|
retry_time_ = 1;
|
||||||
@ -1102,8 +1051,6 @@ void UpdatesManager::after_get_difference() {
|
|||||||
VLOG(get_difference) << "Finish to apply postponed updates";
|
VLOG(get_difference) << "Finish to apply postponed updates";
|
||||||
}
|
}
|
||||||
|
|
||||||
state_ = saved_state;
|
|
||||||
|
|
||||||
td_->animations_manager_->after_get_difference();
|
td_->animations_manager_->after_get_difference();
|
||||||
td_->contacts_manager_->after_get_difference();
|
td_->contacts_manager_->after_get_difference();
|
||||||
td_->inline_queries_manager_->after_get_difference();
|
td_->inline_queries_manager_->after_get_difference();
|
||||||
@ -1111,8 +1058,6 @@ void UpdatesManager::after_get_difference() {
|
|||||||
td_->stickers_manager_->after_get_difference();
|
td_->stickers_manager_->after_get_difference();
|
||||||
send_closure_later(td_->notification_manager_actor_, &NotificationManager::after_get_difference);
|
send_closure_later(td_->notification_manager_actor_, &NotificationManager::after_get_difference);
|
||||||
send_closure(G()->state_manager(), &StateManager::on_synchronized, true);
|
send_closure(G()->state_manager(), &StateManager::on_synchronized, true);
|
||||||
|
|
||||||
set_state(State::Type::General);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdatesManager::on_pending_updates(vector<tl_object_ptr<telegram_api::Update>> &&updates, int32 seq_begin,
|
void UpdatesManager::on_pending_updates(vector<tl_object_ptr<telegram_api::Update>> &&updates, int32 seq_begin,
|
||||||
@ -1186,8 +1131,6 @@ void UpdatesManager::on_pending_updates(vector<tl_object_ptr<telegram_api::Updat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set_state(State::Type::ApplyingUpdates);
|
|
||||||
|
|
||||||
if (date > 0 && updates.size() == 1 && updates[0] != nullptr &&
|
if (date > 0 && updates.size() == 1 && updates[0] != nullptr &&
|
||||||
updates[0]->get_id() == telegram_api::updateReadHistoryOutbox::ID) {
|
updates[0]->get_id() == telegram_api::updateReadHistoryOutbox::ID) {
|
||||||
auto update = static_cast<const telegram_api::updateReadHistoryOutbox *>(updates[0].get());
|
auto update = static_cast<const telegram_api::updateReadHistoryOutbox *>(updates[0].get());
|
||||||
@ -1243,8 +1186,6 @@ void UpdatesManager::on_pending_updates(vector<tl_object_ptr<telegram_api::Updat
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
set_state(State::Type::General);
|
|
||||||
|
|
||||||
if (processed_updates == updates.size()) {
|
if (processed_updates == updates.size()) {
|
||||||
if (seq_begin || seq_end) {
|
if (seq_begin || seq_end) {
|
||||||
LOG(ERROR) << "All updates from " << source << " was processed but seq = " << seq_
|
LOG(ERROR) << "All updates from " << source << " was processed but seq = " << seq_
|
||||||
@ -1327,8 +1268,6 @@ void UpdatesManager::process_updates(vector<tl_object_ptr<telegram_api::Update>>
|
|||||||
|
|
||||||
void UpdatesManager::process_seq_updates(int32 seq_end, int32 date,
|
void UpdatesManager::process_seq_updates(int32 seq_end, int32 date,
|
||||||
vector<tl_object_ptr<telegram_api::Update>> &&updates) {
|
vector<tl_object_ptr<telegram_api::Update>> &&updates) {
|
||||||
set_state(State::Type::ApplyingSeqUpdates);
|
|
||||||
|
|
||||||
string serialized_updates = PSTRING() << "process_seq_updates [seq_ = " << seq_ << ", seq_end = " << seq_end << "]: ";
|
string serialized_updates = PSTRING() << "process_seq_updates [seq_ = " << seq_ << ", seq_end = " << seq_end << "]: ";
|
||||||
// TODO remove after bugs will be fixed
|
// TODO remove after bugs will be fixed
|
||||||
for (auto &update : updates) {
|
for (auto &update : updates) {
|
||||||
@ -1343,10 +1282,6 @@ void UpdatesManager::process_seq_updates(int32 seq_end, int32 date,
|
|||||||
if (date && seq_end) {
|
if (date && seq_end) {
|
||||||
set_date(date, true, std::move(serialized_updates));
|
set_date(date, true, std::move(serialized_updates));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!running_get_difference_) {
|
|
||||||
set_state(State::Type::General);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdatesManager::process_pending_seq_updates() {
|
void UpdatesManager::process_pending_seq_updates() {
|
||||||
|
@ -67,8 +67,6 @@ class UpdatesManager : public Actor {
|
|||||||
return date_;
|
return date_;
|
||||||
}
|
}
|
||||||
|
|
||||||
string get_state() const; // for debug purposes only
|
|
||||||
|
|
||||||
Promise<> set_pts(int32 pts, const char *source) TD_WARN_UNUSED_RESULT;
|
Promise<> set_pts(int32 pts, const char *source) TD_WARN_UNUSED_RESULT;
|
||||||
|
|
||||||
void set_qts(int32 qts);
|
void set_qts(int32 qts);
|
||||||
@ -120,27 +118,6 @@ class UpdatesManager : public Actor {
|
|||||||
bool running_get_difference_ = false;
|
bool running_get_difference_ = false;
|
||||||
int32 last_get_difference_pts_ = 0;
|
int32 last_get_difference_pts_ = 0;
|
||||||
|
|
||||||
class State {
|
|
||||||
public:
|
|
||||||
enum class Type : int32 {
|
|
||||||
General,
|
|
||||||
RunningGetUpdatesState,
|
|
||||||
RunningGetDifference,
|
|
||||||
ApplyingDifference,
|
|
||||||
ApplyingDifferenceSlice,
|
|
||||||
ApplyingUpdates,
|
|
||||||
ApplyingSeqUpdates
|
|
||||||
};
|
|
||||||
Type type = Type::General;
|
|
||||||
int32 pts = -1;
|
|
||||||
int32 qts = -1;
|
|
||||||
int32 date = -1;
|
|
||||||
};
|
|
||||||
|
|
||||||
State state_; // for debug purposes only
|
|
||||||
|
|
||||||
void set_state(State::Type type); // for debug purposes only
|
|
||||||
|
|
||||||
void tear_down() override;
|
void tear_down() override;
|
||||||
|
|
||||||
Promise<> add_pts(int32 pts);
|
Promise<> add_pts(int32 pts);
|
||||||
|
Reference in New Issue
Block a user