Remove debug_message_op.

This commit is contained in:
levlam 2023-03-15 16:26:22 +03:00
parent 37436227f3
commit 5ee1c751f9
2 changed files with 1 additions and 301 deletions

View File

@ -6689,7 +6689,6 @@ void MessagesManager::skip_old_pending_pts_update(tl_object_ptr<telegram_api::Up
} else {
LOG(ERROR) << "Receive awaited sent " << full_message_id << " from " << source << " with PTS " << new_pts
<< " and pts_count " << pts_count << ", but current PTS is " << old_pts;
dump_debug_message_op(get_dialog(full_message_id.get_dialog_id()), 3);
}
}
}
@ -6705,7 +6704,6 @@ void MessagesManager::skip_old_pending_pts_update(tl_object_ptr<telegram_api::Up
} else if (update_sent_message->random_id_ != 0) {
LOG(ERROR) << "Receive awaited sent " << update_sent_message->message_id_ << " from " << source << " with PTS "
<< new_pts << " and pts_count " << pts_count << ", but current PTS is " << old_pts;
dump_debug_message_op(get_dialog(being_sent_messages_[update_sent_message->random_id_].get_dialog_id()), 3);
}
}
return;
@ -9777,9 +9775,6 @@ void MessagesManager::after_get_difference() {
LOG(ERROR) << "Receive updateMessageId from " << old_message_id << " to " << full_message_id
<< " but not receive corresponding message, last_new_message_id = " << d->last_new_message_id;
}
if (dialog_id.get_type() != DialogType::Channel && message_id <= d->last_new_message_id) {
dump_debug_message_op(get_dialog(dialog_id));
}
if (message_id <= d->last_new_message_id) {
get_message_from_server(
full_message_id,
@ -12084,11 +12079,6 @@ void MessagesManager::delete_all_dialog_messages(Dialog *d, bool remove_from_dia
LOG(INFO) << "Delete all messages in " << d->dialog_id
<< " with remove_from_dialog_list = " << remove_from_dialog_list
<< " and is_permanently_deleted = " << is_permanently_deleted;
if (is_debug_message_op_enabled()) {
d->debug_message_op.emplace_back(Dialog::MessageOp::DeleteAll, MessageId(), MessageContentType::None,
remove_from_dialog_list, false, false, "");
}
if (d->server_unread_count + d->local_unread_count > 0) {
MessageId max_message_id =
d->last_database_message_id.is_valid() ? d->last_database_message_id : d->last_new_message_id;
@ -13969,151 +13959,6 @@ void MessagesManager::init() {
save_auth_notification_ids();
}
}
/*
FI LE *f = std::f open("error.txt", "r");
if (f != nullptr) {
DialogId dialog_id(ChannelId(123456));
force_create_dialog(dialog_id, "test");
Dialog *d = get_dialog(dialog_id);
CHECK(d != nullptr);
delete_all_dialog_messages(d, true, false);
d->last_new_message_id = MessageId();
d->last_read_inbox_message_id = MessageId();
d->last_read_outbox_message_id = MessageId();
d->is_last_read_inbox_message_id_inited = false;
d->is_last_read_outbox_message_id_inited = false;
struct MessageBasicInfo {
MessageId message_id;
bool have_previous;
bool have_next;
};
vector<MessageBasicInfo> messages_info;
std::function<void(Message *m)> get_messages_info = [&](Message *m) {
if (m == nullptr) {
return;
}
get_messages_info(m->left.get());
messages_info.push_back(MessageBasicInfo{m->message_id, m->have_previous, m->have_next});
get_messages_info(m->right.get());
};
char buf[1280];
while (std::f gets(buf, sizeof(buf), f) != nullptr) {
Slice log_string(buf, std::strlen(buf));
Slice op = log_string.substr(0, log_string.find(' '));
if (op != "MessageOpAdd" && op != "MessageOpDelete") {
LOG(ERROR) << "Unsupported op " << op;
continue;
}
log_string.remove_prefix(log_string.find(' ') + 1);
if (!begins_with(log_string, "at ")) {
LOG(ERROR) << "Date expected, found " << log_string;
continue;
}
log_string.remove_prefix(3);
auto date_slice = log_string.substr(0, log_string.find(' '));
log_string.remove_prefix(date_slice.size());
bool is_server = false;
if (begins_with(log_string, " server message ")) {
log_string.remove_prefix(16);
is_server = true;
} else if (begins_with(log_string, " yet unsent message ")) {
log_string.remove_prefix(20);
} else if (begins_with(log_string, " local message ")) {
log_string.remove_prefix(15);
} else {
LOG(ERROR) << "Message identifier expected, found " << log_string;
continue;
}
auto server_message_id = to_integer<int32>(log_string);
auto add = 0;
if (!is_server) {
log_string.remove_prefix(log_string.find('.') + 1);
add = to_integer<int32>(log_string);
}
log_string.remove_prefix(log_string.find(' ') + 1);
auto message_id = MessageId(MessageId(ServerMessageId(server_message_id)).get() + add);
auto content_type = log_string.substr(0, log_string.find(' '));
log_string.remove_prefix(log_string.find(' ') + 1);
auto read_bool = [](Slice &str) {
if (begins_with(str, "true ")) {
str.remove_prefix(5);
return true;
}
if (begins_with(str, "false ")) {
str.remove_prefix(6);
return false;
}
LOG(ERROR) << "Bool expected, found " << str;
return false;
};
bool from_update = read_bool(log_string);
bool have_previous = read_bool(log_string);
bool have_next = read_bool(log_string);
if (op == "MessageOpAdd") {
auto m = make_unique<Message>();
set_message_id(m, message_id);
m->date = G()->unix_time();
m->content = create_text_message_content("text", {}, {});
m->have_previous = have_previous;
m->have_next = have_next;
bool need_update = from_update;
bool need_update_dialog_pos = false;
if (add_message_to_dialog(dialog_id, std::move(m), from_update, &need_update, &need_update_dialog_pos,
"Unknown source") == nullptr) {
LOG(ERROR) << "Can't add message " << message_id;
}
} else {
bool need_update_dialog_pos = false;
auto m = delete_message(d, message_id, true, &need_update_dialog_pos, "Unknown source");
CHECK(m != nullptr);
}
messages_info.clear();
get_messages_info(d->messages.get());
for (size_t i = 0; i + 1 < messages_info.size(); i++) {
if (messages_info[i].have_next != messages_info[i + 1].have_previous) {
LOG(ERROR) << messages_info[i].message_id << " has have_next = " << messages_info[i].have_next << ", but "
<< messages_info[i + 1].message_id
<< " has have_previous = " << messages_info[i + 1].have_previous;
}
}
if (!messages_info.empty()) {
if (messages_info.back().have_next != false) {
LOG(ERROR) << messages_info.back().message_id << " has have_next = true, but there is no next message";
}
if (messages_info[0].have_previous != false) {
LOG(ERROR) << messages_info[0].message_id << " has have_previous = true, but there is no previous message";
}
}
}
messages_info.clear();
get_messages_info(d->messages.get());
for (auto &info : messages_info) {
bool need_update_dialog_pos = false;
auto m = delete_message(d, info.message_id, true, &need_update_dialog_pos, "Unknown source");
CHECK(m != nullptr);
}
std::f close(f);
}
*/
}
void MessagesManager::on_authorization_success() {
@ -16325,47 +16170,6 @@ void MessagesManager::on_get_dialogs(FolderId folder_id, vector<tl_object_ptr<te
promise.set_value(Unit());
}
void MessagesManager::dump_debug_message_op(const Dialog *d, int priority) {
if (!is_debug_message_op_enabled()) {
return;
}
if (d == nullptr) {
LOG(ERROR) << "Chat not found";
return;
}
static int last_dumped_priority = -1;
if (priority <= last_dumped_priority) {
LOG(ERROR) << "Skip dump " << d->dialog_id;
return;
}
last_dumped_priority = priority;
for (auto &op : d->debug_message_op) {
switch (op.type) {
case Dialog::MessageOp::Add: {
LOG(ERROR) << "MessageOpAdd at " << op.date << " " << op.message_id << " " << op.content_type << " "
<< op.from_update << " " << op.have_previous << " " << op.have_next << " " << op.source;
break;
}
case Dialog::MessageOp::SetPts: {
LOG(ERROR) << "MessageOpSetPts at " << op.date << " " << op.pts << " " << op.source;
break;
}
case Dialog::MessageOp::Delete: {
LOG(ERROR) << "MessageOpDelete at " << op.date << " " << op.message_id << " " << op.content_type << " "
<< op.from_update << " " << op.have_previous << " " << op.have_next << " " << op.source;
break;
}
case Dialog::MessageOp::DeleteAll: {
LOG(ERROR) << "MessageOpDeleteAll at " << op.date << " " << op.from_update;
break;
}
default:
UNREACHABLE();
}
}
}
bool MessagesManager::is_message_unload_enabled() const {
return G()->use_message_database() || td_->auth_manager_->is_bot();
}
@ -16640,7 +16444,6 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
if (unread_count == 0) {
LOG(ERROR) << "Unread count became negative in " << d->dialog_id << " after deletion of " << message_id
<< ". Last read is " << d->last_read_inbox_message_id;
dump_debug_message_op(d, 3);
} else {
unread_count--;
set_dialog_last_read_inbox_message_id(d, MessageId::min(), server_unread_count, local_unread_count, false,
@ -16665,11 +16468,6 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
<< d->being_deleted_message_id << " " << message_id << " " << source;
d->being_deleted_message_id = message_id;
if (is_debug_message_op_enabled()) {
d->debug_message_op.emplace_back(Dialog::MessageOp::Delete, m->message_id, m->content->get_type(), false,
m->have_previous, m->have_next, source);
}
bool need_get_history = false;
if (!only_from_memory) {
LOG(INFO) << "Deleting " << full_message_id << " with have_previous = " << m->have_previous
@ -16690,7 +16488,6 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
} else {
LOG(ERROR) << "Have have_previous is true, but there is no previous for " << full_message_id << " from "
<< source;
dump_debug_message_op(d);
set_dialog_last_message_id(d, MessageId(), "do_delete_message");
}
} else {
@ -16736,7 +16533,6 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
}
} else {
LOG(ERROR) << "Have have_previous is true, but there is no previous";
dump_debug_message_op(d);
}
}
if (d->last_database_message_id.is_valid()) {
@ -16755,7 +16551,6 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
} else {
LOG(ERROR) << "Have have_previous is true, but there is no previous for " << full_message_id << " from "
<< source;
dump_debug_message_op(d);
d->suffix_load_first_message_id_ = MessageId();
d->suffix_load_done_ = false;
}
@ -16785,7 +16580,6 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
} else {
LOG(ERROR) << "Have have_previous is true, but there is no previous for " << full_message_id << " from "
<< source;
dump_debug_message_op(d);
}
}
if ((*v)->have_next && (only_from_memory || !(*v)->have_previous)) {
@ -16797,7 +16591,6 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
next_m->have_previous = false;
} else {
LOG(ERROR) << "Have have_next is true, but there is no next for " << full_message_id << " from " << source;
dump_debug_message_op(d);
}
}
@ -16824,7 +16617,6 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
if (need_unread_counter(d->order)) {
LOG(ERROR) << "Unread count became negative in " << d->dialog_id << " after deletion of " << message_id
<< ". Last read is " << d->last_read_inbox_message_id;
dump_debug_message_op(d, 3);
}
} else {
unread_count--;
@ -16995,11 +16787,6 @@ void MessagesManager::do_delete_all_dialog_messages(Dialog *d, unique_ptr<Messag
const Message *m = message.get();
MessageId message_id = m->message_id;
if (is_debug_message_op_enabled()) {
d->debug_message_op.emplace_back(Dialog::MessageOp::Delete, m->message_id, m->content->get_type(), false,
m->have_previous, m->have_next, "delete all messages");
}
LOG(INFO) << "Delete " << message_id;
deleted_message_ids.push_back(message_id.get());
@ -21453,9 +21240,6 @@ DialogId MessagesManager::migrate_dialog_to_megagroup(DialogId dialog_id, Promis
d = add_dialog(new_dialog_id, "migrate_dialog_to_megagroup");
if (d->pts == 0) {
d->pts = 1;
if (is_debug_message_op_enabled()) {
d->debug_message_op.emplace_back(Dialog::MessageOp::SetPts, d->pts, "migrate");
}
}
update_dialog_pos(d, "migrate_dialog_to_megagroup");
}
@ -27237,8 +27021,6 @@ void MessagesManager::on_upload_message_media_file_part_missing(DialogId dialog_
}
if (!have_input_peer(dialog_id, AccessRights::Read)) {
// LOG(ERROR) << "Found " << m->message_id << " in inaccessible " << dialog_id;
// dump_debug_message_op(get_dialog(dialog_id), 5);
return; // the message should be deleted soon
}
@ -27262,8 +27044,6 @@ void MessagesManager::on_upload_message_media_fail(DialogId dialog_id, MessageId
}
if (!have_input_peer(dialog_id, AccessRights::Read)) {
// LOG(ERROR) << "Found " << m->message_id << " in inaccessible " << dialog_id;
// dump_debug_message_op(get_dialog(dialog_id), 5);
return; // the message should be deleted soon
}
@ -32432,11 +32212,6 @@ FullMessageId MessagesManager::on_send_message_success(int64 random_id, MessageI
return {};
}
if (!have_input_peer(dialog_id, AccessRights::Read)) {
// LOG(ERROR) << "Found " << old_message_id << " in inaccessible " << dialog_id;
// dump_debug_message_op(d, 5);
}
// imitation of update_message(d, sent_message.get(), std::move(new_message), &need_update_dialog_pos, false);
if (date <= 0) {
LOG(ERROR) << "Receive " << new_message_id << " in " << dialog_id << " with wrong date " << date << " from "
@ -32522,11 +32297,6 @@ void MessagesManager::on_send_message_file_part_missing(int64 random_id, int bad
}
auto dialog_id = full_message_id.get_dialog_id();
if (!have_input_peer(dialog_id, AccessRights::Read)) {
// LOG(ERROR) << "Found " << m->message_id << " in inaccessible " << dialog_id;
// dump_debug_message_op(get_dialog(dialog_id), 5);
}
if (dialog_id.get_type() == DialogType::SecretChat) {
CHECK(!m->message_id.is_scheduled());
Dialog *d = get_dialog(dialog_id);
@ -32572,11 +32342,6 @@ void MessagesManager::on_send_message_file_reference_error(int64 random_id) {
}
auto dialog_id = full_message_id.get_dialog_id();
if (!have_input_peer(dialog_id, AccessRights::Read)) {
// LOG(ERROR) << "Found " << m->message_id << " in inaccessible " << dialog_id;
// dump_debug_message_op(get_dialog(dialog_id), 5);
}
if (dialog_id.get_type() == DialogType::SecretChat) {
CHECK(!m->message_id.is_scheduled());
Dialog *d = get_dialog(dialog_id);
@ -32686,11 +32451,6 @@ void MessagesManager::on_send_message_fail(int64 random_id, Status error) {
<< "Receive error " << error << " about sent message with random_id = " << random_id;
auto dialog_id = full_message_id.get_dialog_id();
if (!have_input_peer(dialog_id, AccessRights::Read)) {
// LOG(ERROR) << "Found " << m->message_id << " in inaccessible " << dialog_id;
// dump_debug_message_op(get_dialog(dialog_id), 5);
}
int error_code = error.code();
string error_message = error.message().str();
switch (error_code) {
@ -32895,11 +32655,6 @@ void MessagesManager::fail_send_message(FullMessageId full_message_id, int error
return;
}
if (!have_input_peer(dialog_id, AccessRights::Read)) {
// LOG(ERROR) << "Found " << old_message_id << " in inaccessible " << dialog_id;
// dump_debug_message_op(d, 5);
}
MessageId new_message_id = old_message_id.get_next_message_id(MessageType::Local); // trying to keep message position
if (!old_message_id.is_scheduled()) {
if (get_message_force(d, new_message_id, "fail_send_message") != nullptr || is_deleted_message(d, new_message_id) ||
@ -35690,12 +35445,6 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
return nullptr;
}
auto message_content_type = message->content->get_type();
if (is_debug_message_op_enabled()) {
d->debug_message_op.emplace_back(Dialog::MessageOp::Add, message_id, message_content_type, from_update,
message->have_previous, message->have_next, source);
}
message->last_access_date = G()->unix_time_cached();
if (from_update) {
@ -35712,7 +35461,6 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
if (!has_qts_messages(dialog_id)) {
LOG(ERROR) << "New " << message_id << " in " << dialog_id << " from " << source
<< " has identifier less than last_new_message_id = " << d->last_new_message_id;
dump_debug_message_op(d);
}
}
}
@ -35743,7 +35491,6 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
<< ", being added message is " << d->being_added_message_id << ", channel difference "
<< debug_channel_difference_dialog_ << " "
<< to_string(get_message_object(dialog_id, message.get(), "add_message_to_dialog"));
dump_debug_message_op(d, 3);
}
if (need_channel_difference_to_add_message(dialog_id, nullptr)) {
@ -35767,6 +35514,7 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
return nullptr;
}
auto message_content_type = message->content->get_type();
if (message_content_type == MessageContentType::ChatDeleteHistory) {
{
auto m = delete_message(d, message_id, true, need_update_dialog_pos, "message chat delete history");
@ -35837,7 +35585,6 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
<< (message->forward_info == nullptr ? " not" : "") << " forwarded " << message_id
<< " 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;
dump_debug_message_op(d, 1);
}
}
}
@ -36078,12 +35825,10 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
if (next_message->message_id.is_server() && !has_qts_messages(dialog_id)) {
LOG(ERROR) << "Attach " << message_id << " from " << source << " before " << next_message->message_id
<< " and after " << previous_message_id << " in " << dialog_id;
dump_debug_message_op(d);
}
} else {
LOG(ERROR) << "Have_next is true, but there is no next message after " << previous_message_id << " from "
<< source << " in " << dialog_id;
dump_debug_message_op(d);
}
}
@ -36250,7 +35995,6 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
LOG(ERROR) << "Can't attach " << m->message_id << " of type " << m->content->get_type() << " from " << source
<< " from " << (m->from_database ? "database" : "server") << " before " << next_message->message_id
<< " and after " << previous_message->message_id << " in " << dialog_id;
dump_debug_message_op(d);
}
next_message->have_previous = false;
@ -36258,7 +36002,6 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
} else {
LOG(ERROR) << "Have_next is true, but there is no next message after " << previous_message->message_id
<< " from " << source << " in " << dialog_id;
dump_debug_message_op(d);
}
} else if (m->message_id.is_server() && d->last_message_id.is_valid() && m->message_id > d->last_message_id) {
LOG(INFO) << "Receive " << m->message_id << ", which is newer than the last " << d->last_message_id
@ -37816,9 +37559,6 @@ MessagesManager::Dialog *MessagesManager::add_new_dialog(unique_ptr<Dialog> &&di
auto pts = load_channel_pts(dialog_id);
if (pts > 0) {
d->pts = pts;
if (is_debug_message_op_enabled()) {
d->debug_message_op.emplace_back(Dialog::MessageOp::SetPts, pts, "add_new_dialog");
}
}
break;
}
@ -39445,10 +39185,6 @@ void MessagesManager::set_channel_pts(Dialog *d, int32 new_pts, const char *sour
<< "Set PTS of " << d->dialog_id << " to " << new_pts << " from " << source
<< " while running getChannelDifference";
if (is_debug_message_op_enabled()) {
d->debug_message_op.emplace_back(Dialog::MessageOp::SetPts, new_pts, source);
}
// TODO delete_first_messages support in channels
if (new_pts == std::numeric_limits<int32>::max()) {
LOG(ERROR) << "Update " << d->dialog_id << " PTS to -1 from " << source;
@ -39895,7 +39631,6 @@ void MessagesManager::on_get_channel_dialog(DialogId dialog_id, MessageId last_m
CHECK(d->last_message_id == d->last_new_message_id);
} else {
LOG(ERROR) << added_full_message_id << " doesn't became last new message, which is " << d->last_new_message_id;
dump_debug_message_op(d, 2);
}
} else if (last_message_id > d->last_new_message_id) {
set_dialog_last_new_message_id(d, last_message_id,

View File

@ -1450,36 +1450,7 @@ class MessagesManager final : public Actor {
unique_ptr<Message> messages;
unique_ptr<Message> scheduled_messages;
struct MessageOp {
enum : int8 { Add, SetPts, Delete, DeleteAll } type;
bool from_update = false;
bool have_previous = false;
bool have_next = false;
MessageContentType content_type = MessageContentType::None;
int32 pts = 0;
MessageId message_id;
const char *source = nullptr;
double date = 0;
MessageOp(decltype(type) type, MessageId message_id, MessageContentType content_type, bool from_update,
bool have_previous, bool have_next, const char *source)
: type(type)
, from_update(from_update)
, have_previous(have_previous)
, have_next(have_next)
, content_type(content_type)
, message_id(message_id)
, source(source)
, date(G()->server_time()) {
}
MessageOp(decltype(type) type, int32 pts, const char *source)
: type(type), pts(pts), source(source), date(G()->server_time()) {
}
};
const char *debug_set_dialog_last_database_message_id = "Unknown"; // to be removed soon
vector<MessageOp> debug_message_op;
// message identifiers loaded from database
MessageId debug_last_new_message_id;
@ -3327,14 +3298,8 @@ class MessagesManager final : public Actor {
void load_calls_db_state();
void save_calls_db_state();
static constexpr bool is_debug_message_op_enabled() {
return !LOG_IS_STRIPPED(ERROR) && false;
}
void add_message_dependencies(Dependencies &dependencies, const Message *m);
static void dump_debug_message_op(const Dialog *d, int priority = 0);
static void save_send_message_log_event(DialogId dialog_id, const Message *m);
static uint64 save_toggle_dialog_report_spam_state_on_server_log_event(DialogId dialog_id, bool is_spam_dialog);