Fix log messages style.

GitOrigin-RevId: f99e2e838220826d3dea7fdc33c43ac9918a5efd
This commit is contained in:
levlam 2019-02-21 18:58:20 +03:00
parent 2e144e6e3e
commit 93494cf048
45 changed files with 129 additions and 127 deletions

View File

@ -42,7 +42,7 @@ class RingBench : public td::Benchmark {
int start_n = 0;
void pass(int n) {
// LOG(INFO) << "pass: " << n;
// LOG(INFO) << "Pass: " << n;
if (n == 0) {
td::Scheduler::instance()->finish();
} else {

View File

@ -61,7 +61,7 @@ class Server : public TcpListener::Callback {
}
void hangup() override {
// may be it should be default?..
LOG(ERROR) << "hangup..";
LOG(ERROR) << "Hanging up..";
stop();
}

View File

@ -109,7 +109,7 @@ class Server : public TcpListener::Callback {
}
void hangup() override {
// may be it should be default?..
LOG(ERROR) << "hangup..";
LOG(ERROR) << "Hanging up..";
stop();
}

View File

@ -92,7 +92,7 @@ class Server : public TcpListener::Callback {
create_actor_on_scheduler<HttpEchoConnection>("HttpInboundConnection", scheduler_id, std::move(fd)).release();
}
void hangup() override {
LOG(ERROR) << "hangup..";
LOG(ERROR) << "Hanging up..";
stop();
}

View File

@ -3087,7 +3087,7 @@ setPinnedChats chat_ids:vector<int53> = Ok;
//@file_id Identifier of the file to download
//@priority Priority of the download (1-32). The higher the priority, the earlier the file will be downloaded. If the priorities of two files are equal, then the last one for which downloadFile was called will be downloaded first
//@offset File will be downloaded starting from that offset in bytes first. Supposed to be used for streaming
//@limit Download will be automatically cancelled when it is downloaded more or equeal than limit bytes starting from offset.
//@limit Download will be automatically cancelled when at least limit bytes are downloaded starting from the specified offset; use 0 to download without limit
downloadFile file_id:int32 priority:int32 offset:int32 limit:int32 = File;
//@description Returns file downloaded prefix size from a given offset @file_id Identifier of the file @offset Offset from which downloaded prefix size should be calculated

View File

@ -55,7 +55,7 @@ bool AuthData::is_ready(double now) {
return false;
}
if (!has_salt(now)) {
LOG(INFO) << "no salt";
LOG(INFO) << "Need salt";
return false;
}
return true;

View File

@ -38,7 +38,7 @@ void RawConnection::send_crypto(const Storer &storer, int64 session_id, int64 sa
if (tmp.second) {
use_quick_ack = true;
} else {
LOG(ERROR) << "quick_ack collision " << tag("quick_ack", info.message_ack);
LOG(ERROR) << "Quick ack collision " << tag("quick_ack", info.message_ack);
}
}

View File

@ -294,7 +294,8 @@ Status SessionConnection::on_packet(const MsgInfo &info, uint64 req_msg_id, cons
if (req_msg_id != 0) {
callback_->on_message_result_error(req_msg_id, rpc_error.error_code_, as_buffer_slice(rpc_error.error_message_));
} else {
LOG(WARNING) << "rpc_error as update: [" << rpc_error.error_code_ << "][" << rpc_error.error_message_ << "]";
LOG(WARNING) << "Receive rpc_error as update: [" << rpc_error.error_code_ << "][" << rpc_error.error_message_
<< "]";
}
return Status::OK();
}
@ -779,7 +780,7 @@ void SessionConnection::cancel_answer(int64 message_id) {
}
void SessionConnection::destroy_key() {
LOG(INFO) << "need_destroy_key = true";
LOG(INFO) << "Set need_destroy_auth_key to true";
need_destroy_auth_key_ = true;
}

View File

@ -476,7 +476,7 @@ void AuthManager::on_log_out_result(NetQueryPtr &result) {
} else {
status = std::move(result->error());
}
LOG_IF(ERROR, status.is_error()) << "auth.logOut failed: " << status;
LOG_IF(ERROR, status.is_error()) << "Receive error for auth.logOut: " << status;
// state_ will stay logout, so no queries will work.
destroy_auth_keys();
if (query_id_ != 0) {
@ -517,7 +517,7 @@ void AuthManager::on_delete_account_result(NetQueryPtr &result) {
status = std::move(result->error());
}
if (status.is_error() && status.error().message() != "USER_DEACTIVATED") {
LOG(WARNING) << "account.deleteAccount failed: " << status;
LOG(WARNING) << "Request account.deleteAccount failed: " << status;
// TODO handle some errors
if (query_id_ != 0) {
on_query_error(std::move(status));

View File

@ -5153,7 +5153,7 @@ void ContactsManager::on_get_user(tl_object_ptr<telegram_api::User> &&user_ptr,
invalidate_user_full(user_id);
}
LOG(DEBUG) << "is_deleted has changed for " << user_id;
LOG(DEBUG) << "User.is_deleted has changed for " << user_id;
u->need_send_update = true;
}

View File

@ -607,7 +607,7 @@ static vector<Slice> match_urls(Slice str) {
}
}
}
// LOG(ERROR) << "full: " << Slice(url_begin_ptr, url_end_ptr) << " " << is_bad;
// LOG(ERROR) << "Full: " << Slice(url_begin_ptr, url_end_ptr) << " " << is_bad;
if (!is_bad) {
if (url_end_ptr > begin + dot_pos + 1) {

View File

@ -3281,7 +3281,7 @@ class GetChannelDifferenceQuery : public Td::ResultHandler {
void on_error(uint64 id, Status status) override {
if (!td->messages_manager_->on_get_dialog_error(dialog_id_, status, "GetChannelDifferenceQuery")) {
LOG(ERROR) << "updates.getChannelDifference error for " << dialog_id_ << ": " << status;
LOG(ERROR) << "Receive updates.getChannelDifference error for " << dialog_id_ << ": " << status;
}
td->messages_manager_->on_get_channel_difference(dialog_id_, pts_, limit_, nullptr);
status.ignore();
@ -4724,7 +4724,7 @@ void MessagesManager::add_pending_update(tl_object_ptr<telegram_api::Update> &&u
}
if (old_pts + pts_count > new_pts) {
LOG(WARNING) << "old_pts (= " << old_pts << ") + pts_count (= " << pts_count << ") > new_pts (= " << new_pts
LOG(WARNING) << "Have old_pts (= " << old_pts << ") + pts_count (= " << pts_count << ") > new_pts (= " << new_pts
<< "). Logged in " << G()->shared_config().get_option_integer("authorization_date") << ". Update from "
<< source << " = " << oneline(to_string(update));
set_get_difference_timeout(0.001);
@ -4737,7 +4737,7 @@ void MessagesManager::add_pending_update(tl_object_ptr<telegram_api::Update> &&u
}
if (old_pts + accumulated_pts_count_ > accumulated_pts_) {
LOG(WARNING) << "old_pts (= " << old_pts << ") + accumulated_pts_count (= " << accumulated_pts_count_
LOG(WARNING) << "Have old_pts (= " << old_pts << ") + accumulated_pts_count (= " << accumulated_pts_count_
<< ") > accumulated_pts (= " << accumulated_pts_ << "). new_pts = " << new_pts
<< ", pts_count = " << pts_count << ". Logged in "
<< G()->shared_config().get_option_integer("authorization_date") << ". Update from " << source << " = "
@ -6913,7 +6913,8 @@ void MessagesManager::on_get_dialog_messages_search_result(DialogId dialog_id, c
auto &old_first_db_message_id =
calls_db_state_.first_calls_database_message_id_by_index[search_calls_filter_index(filter)];
bool from_the_end = !from_message_id.is_valid() || from_message_id.get() >= MessageId::max().get();
LOG(INFO) << "from_the_end = " << from_the_end << ", old_first_db_message_id = " << old_first_db_message_id.get()
LOG(INFO) << "Have from_the_end = " << from_the_end
<< ", old_first_db_message_id = " << old_first_db_message_id.get()
<< ", first_added_message_id = " << first_added_message_id.get()
<< ", from_message_id = " << from_message_id.get();
if ((from_the_end ||
@ -8981,8 +8982,8 @@ void MessagesManager::ttl_db_loop_start(double server_now) {
}
void MessagesManager::ttl_db_loop(double server_now) {
LOG(INFO) << "ttl_db: loop " << tag("expires_from", ttl_db_expires_from_) << tag("expires_till", ttl_db_expires_till_)
<< tag("has_query", ttl_db_has_query_);
LOG(INFO) << "Begin ttl_db loop: " << tag("expires_from", ttl_db_expires_from_)
<< tag("expires_till", ttl_db_expires_till_) << tag("has_query", ttl_db_has_query_);
if (ttl_db_has_query_) {
return;
}
@ -8990,7 +8991,7 @@ void MessagesManager::ttl_db_loop(double server_now) {
auto now = static_cast<int32>(server_now);
if (ttl_db_expires_till_ < 0) {
LOG(INFO) << "ttl_db: finished";
LOG(INFO) << "Finish ttl_db loop";
return;
}
@ -8998,13 +8999,13 @@ void MessagesManager::ttl_db_loop(double server_now) {
ttl_db_slot_.set_event(EventCreator::yield(actor_shared(this, YieldType::TtlDb)));
auto wakeup_in = ttl_db_expires_from_ - server_now;
ttl_db_slot_.set_timeout_in(wakeup_in);
LOG(INFO) << "ttl_db: " << tag("wakeup in", wakeup_in);
LOG(INFO) << "Set ttl_db timeout in " << wakeup_in;
return;
}
ttl_db_has_query_ = true;
int32 limit = 50;
LOG(INFO) << "ttl_db: send query " << tag("expires_from", ttl_db_expires_from_)
LOG(INFO) << "Send ttl_db query " << tag("expires_from", ttl_db_expires_from_)
<< tag("expires_till", ttl_db_expires_till_) << tag("limit", limit);
G()->td_db()->get_messages_db_async()->get_expiring_messages(
ttl_db_expires_from_, ttl_db_expires_till_, limit,
@ -9021,7 +9022,7 @@ void MessagesManager::ttl_db_on_result(Result<std::pair<std::vector<std::pair<Di
ttl_db_expires_from_ = ttl_db_expires_till_;
ttl_db_expires_till_ = result.second;
LOG(INFO) << "ttl_db: query result " << tag("new expires_till", ttl_db_expires_till_)
LOG(INFO) << "Receive ttl_db query result " << tag("new expires_till", ttl_db_expires_till_)
<< tag("got messages", result.first.size());
for (auto &dialog_message : result.first) {
on_get_message_from_database(dialog_message.first, get_dialog_force(dialog_message.first), dialog_message.second,
@ -10767,7 +10768,8 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
if (*it != nullptr) {
set_dialog_last_message_id(d, (*it)->message_id, "do_delete_message");
} else {
LOG(ERROR) << "have_previous is true, but there is no previous for " << full_message_id << " from " << source;
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");
}
@ -10804,7 +10806,7 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
need_get_history = true;
}
} else {
LOG(ERROR) << "have_previous is true, but there is no previous";
LOG(ERROR) << "Have have_previous is true, but there is no previous";
dump_debug_message_op(d);
}
}
@ -10822,7 +10824,8 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
if (*it != nullptr) {
d->suffix_load_first_message_id_ = (*it)->message_id;
} else {
LOG(ERROR) << "have_previous is true, but there is no previous for " << full_message_id << " from " << source;
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;
@ -10846,7 +10849,8 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
if (prev_m != nullptr) {
prev_m->have_next = false;
} else {
LOG(ERROR) << "have_previous is true, but there is no previous for " << full_message_id << " from " << source;
LOG(ERROR) << "Have have_previous is true, but there is no previous for " << full_message_id << " from "
<< source;
dump_debug_message_op(d);
}
}
@ -10858,7 +10862,7 @@ unique_ptr<MessagesManager::Message> MessagesManager::do_delete_message(Dialog *
if (next_m != nullptr) {
next_m->have_previous = false;
} else {
LOG(ERROR) << "have_next is true, but there is no next for " << full_message_id << " from " << source;
LOG(ERROR) << "Have have_next is true, but there is no next for " << full_message_id << " from " << source;
dump_debug_message_op(d);
}
}
@ -24833,7 +24837,7 @@ void MessagesManager::suffix_load_query_ready(DialogId dialog_id) {
bool is_unchanged = d->suffix_load_first_message_id_ == d->suffix_load_query_message_id_;
suffix_load_update_first_message_id(d);
if (is_unchanged && d->suffix_load_first_message_id_ == d->suffix_load_query_message_id_) {
LOG(INFO) << "suffix_load done " << dialog_id;
LOG(INFO) << "Finished suffix load in " << dialog_id;
d->suffix_load_done_ = true;
}
d->suffix_load_has_query_ = false;

View File

@ -1057,7 +1057,7 @@ class MessagesManager : public Actor {
MessagesIteratorBase(const Message *root, MessageId message_id) {
size_t last_right_pos = 0;
while (root != nullptr) {
// LOG(DEBUG) << "root->message_id = " << root->message_id;
// LOG(DEBUG) << "Have root->message_id = " << root->message_id;
stack_.push_back(root);
if (root->message_id.get() <= message_id.get()) {
// LOG(DEBUG) << "Go right";

View File

@ -155,7 +155,7 @@ bool operator==(const ProfilePhoto &lhs, const ProfilePhoto &rhs) {
}
if (location_differs) {
LOG_IF(ERROR, !id_differs) << "location_differs = true, but id_differs = false. First profilePhoto: " << lhs
LOG_IF(ERROR, !id_differs) << "Photo " << lhs.id << " location has changed. First profilePhoto: " << lhs
<< ", second profilePhoto: " << rhs;
return false;
}

View File

@ -98,7 +98,7 @@ void SecretChatActor::create_chat(int32 user_id, int64 user_access_hash, int32 r
}
void SecretChatActor::on_result_resendable(NetQueryPtr net_query, Promise<NetQueryPtr> promise) {
LOG(INFO) << "on_result_resendable: " << net_query << " " << close_flag_;
LOG(INFO) << "In on_result_resendable: " << net_query << " " << close_flag_;
if (context_->close_flag()) {
return;
}
@ -496,9 +496,8 @@ void SecretChatActor::send_action(tl_object_ptr<secret_api::DecryptedMessageActi
void SecretChatActor::binlog_replay_finish() {
on_his_in_seq_no_updated();
LOG(INFO) << "Binlog replay is finished";
LOG(INFO) << "binlog_replay_finish with SeqNoState=" << seq_no_state_;
LOG(INFO) << "binlog_replay_finish with PfsState=" << pfs_state_;
LOG(INFO) << "Binlog replay is finished with SeqNoState=" << seq_no_state_;
LOG(INFO) << "Binlog replay is finished with PfsState=" << pfs_state_;
binlog_replay_finish_flag_ = true;
if (auth_state_.state == State::Ready) {
if (config_state_.my_layer < MY_LAYER) {
@ -1142,7 +1141,7 @@ void SecretChatActor::on_seq_no_state_changed() {
}
void SecretChatActor::on_pfs_state_changed() {
LOG(INFO) << "on_pfs_state_changed: " << pfs_state_;
LOG(INFO) << "In on_pfs_state_changed: " << pfs_state_;
pfs_state_changed_ = true;
}
Promise<> SecretChatActor::add_changes(Promise<> save_changes_finish) {
@ -1179,7 +1178,7 @@ void SecretChatActor::update_seq_no_state(const T &new_seq_no_state) {
}
seq_no_state_.message_id = new_seq_no_state.message_id;
if (new_seq_no_state.my_in_seq_no != -1) {
LOG(INFO) << "my_in_seq_no: " << seq_no_state_.my_in_seq_no << "--->" << new_seq_no_state.my_in_seq_no;
LOG(INFO) << "Have my_in_seq_no: " << seq_no_state_.my_in_seq_no << "--->" << new_seq_no_state.my_in_seq_no;
seq_no_state_.my_in_seq_no = new_seq_no_state.my_in_seq_no;
seq_no_state_.my_out_seq_no = new_seq_no_state.my_out_seq_no;
@ -1950,8 +1949,8 @@ void SecretChatActor::start_up() {
// auto end = Time::now();
// CHECK(end - start < 0.2);
LOG(INFO) << "start_up with SeqNoState=" << seq_no_state_;
LOG(INFO) << "start_up with PfsState=" << pfs_state_;
LOG(INFO) << "In start_up with SeqNoState=" << seq_no_state_;
LOG(INFO) << "In start_up with PfsState=" << pfs_state_;
}
void SecretChatActor::get_dh_config() {
@ -2250,7 +2249,7 @@ Status SecretChatActor::on_inbound_action(secret_api::DecryptedMessageAction &ac
}
pfs_state_.message_id = message_id; // replay protection
LOG(INFO) << "on_inbound_action: " << to_string(action);
LOG(INFO) << "In on_inbound_action: " << to_string(action);
Status res;
downcast_call(action, [&](auto &obj) { res = this->on_inbound_action(obj); });
return res;
@ -2270,7 +2269,7 @@ void SecretChatActor::on_outbound_action(secret_api::DecryptedMessageAction &act
}
pfs_state_.message_id = message_id; // replay protection
LOG(INFO) << "on_outbound_action: " << to_string(action);
LOG(INFO) << "In on_outbound_action: " << to_string(action);
downcast_call(action, [&](auto &obj) { this->on_outbound_action(obj); });
}

View File

@ -127,7 +127,7 @@ void SecretChatsManager::update_qts(int qts) {
if (dummy_mode_ || close_flag_ || qts < 0) {
return;
}
LOG(INFO) << "update qts: " << qts;
LOG(INFO) << "Update qts to " << qts;
add_qts(qts).set_value(Unit());
has_qts_ = true;
LOG(INFO) << "Update secret chats qts " << tag("qts", qts);

View File

@ -3427,7 +3427,7 @@ void Td::force_get_difference() {
void Td::on_result(NetQueryPtr query) {
query->debug("Td: received from DcManager");
VLOG(net_query) << "on_result " << query;
VLOG(net_query) << "Receive result of " << query;
if (close_flag_ > 1) {
return;
}
@ -3596,7 +3596,7 @@ void Td::on_connection_state_changed(StateManager::State new_state) {
}
void Td::on_authorization_lost() {
LOG(WARNING) << "on_authorization_lost";
LOG(WARNING) << "Lost authoriation";
send_closure(auth_manager_actor_, &AuthManager::on_authorization_lost);
}
@ -3737,7 +3737,7 @@ void Td::inc_request_actor_refcnt() {
void Td::dec_request_actor_refcnt() {
request_actor_refcnt_--;
if (request_actor_refcnt_ == 0) {
LOG(WARNING) << "no request actors";
LOG(WARNING) << "Have no request actors";
clear();
dec_actor_refcnt(); // remove guard
}

View File

@ -404,7 +404,7 @@ void TopDialogManager::on_result(NetQueryPtr net_query) {
};
auto top_peers_parent = r_top_peers.move_as_ok();
LOG(DEBUG) << "contacts_getTopPeers returned " << to_string(top_peers_parent);
LOG(DEBUG) << "Receive contacts_getTopPeers result: " << to_string(top_peers_parent);
switch (top_peers_parent->get_id()) {
case telegram_api::contacts_topPeersNotModified::ID:
// nothing to do

View File

@ -91,7 +91,7 @@ class GetUpdatesStateQuery : public Td::ResultHandler {
void on_error(uint64 id, Status status) override {
if (status.message() != CSlice("SESSION_REVOKED") && status.message() != CSlice("USER_DEACTIVATED")) {
LOG(ERROR) << "updates.getState error: " << status;
LOG(ERROR) << "Receive updates.getState error: " << status;
}
status.ignore();
td->updates_manager_->on_get_updates_state(nullptr, "GetUpdatesStateQuery");
@ -150,7 +150,7 @@ class GetDifferenceQuery : public Td::ResultHandler {
void on_error(uint64 id, Status status) override {
if (status.code() != 401 && status.message() != CSlice("SESSION_REVOKED") &&
status.message() != CSlice("USER_DEACTIVATED")) {
LOG(ERROR) << "updates.getDifference error: " << status;
LOG(ERROR) << "Receive updates.getDifference error: " << status;
}
td->updates_manager_->on_get_difference(nullptr);
if (status.message() == CSlice("PERSISTENT_TIMESTAMP_INVALID")) {

View File

@ -66,7 +66,7 @@ namespace td {
static void dump_memory_usage() {
if (is_memprof_on()) {
LOG(WARNING) << "memory_dump";
LOG(WARNING) << "Memory dump:";
clear_thread_locals();
std::vector<AllocInfo> v;
dump_alloc([&](const AllocInfo &info) { v.push_back(info); });
@ -583,11 +583,11 @@ class CliClient final : public Actor {
void on_result(uint64 generation, uint64 id, tl_object_ptr<td_api::Object> result) {
if (id > 0 && GET_VERBOSITY_LEVEL() < VERBOSITY_NAME(td_requests)) {
LOG(ERROR) << "on_result [" << generation << "][id=" << id << "] " << to_string(result);
LOG(ERROR) << "Receive result [" << generation << "][id=" << id << "] " << to_string(result);
}
auto as_json_str = json_encode<std::string>(ToJson(result));
// LOG(INFO) << "on_result [" << generation << "][id=" << id << "] " << as_json_str;
// LOG(INFO) << "Receive result [" << generation << "][id=" << id << "] " << as_json_str;
auto copy_as_json_str = as_json_str;
auto as_json_value = json_decode(copy_as_json_str).move_as_ok();
td_api::object_ptr<td_api::Object> object;
@ -595,7 +595,7 @@ class CliClient final : public Actor {
CHECK(object != nullptr);
auto as_json_str2 = json_encode<std::string>(ToJson(object));
LOG_CHECK(as_json_str == as_json_str2) << "\n" << tag("a", as_json_str) << "\n" << tag("b", as_json_str2);
// LOG(INFO) << "on_result [" << generation << "][id=" << id << "] " << as_json_str;
// LOG(INFO) << "Receive result [" << generation << "][id=" << id << "] " << as_json_str;
if (generation != generation_) {
LOG(INFO) << "Drop received from previous Client " << to_string(result);
@ -691,12 +691,12 @@ class CliClient final : public Actor {
void on_error(uint64 generation, uint64 id, tl_object_ptr<td_api::error> error) {
if (id > 0 && GET_VERBOSITY_LEVEL() < VERBOSITY_NAME(td_requests)) {
LOG(ERROR) << "on_error [" << generation << "][id=" << id << "] " << to_string(error);
LOG(ERROR) << "Receive error [" << generation << "][id=" << id << "] " << to_string(error);
}
}
void on_closed(uint64 generation) {
LOG(WARNING) << "on_closed " << generation;
LOG(WARNING) << "Td with generation " << generation << " is closed";
closed_td_++;
if (closed_td_ == generation_) {
LOG(WARNING) << "Ready to stop";
@ -731,7 +731,7 @@ class CliClient final : public Actor {
static void static_add_cmd(char *line) {
/* Can use ^D (stty eof) to exit. */
if (line == nullptr) {
LOG(FATAL) << "closed";
LOG(FATAL) << "Closed";
return;
}
if (*line) {

View File

@ -254,7 +254,7 @@ class FileDb : public FileDbInterface {
int attempt_count = 0;
while (true) {
if (attempt_count > 100) {
LOG(FATAL) << "cycle in file database?";
LOG(FATAL) << "Cycle in file database?";
}
attempt_count++;

View File

@ -31,7 +31,7 @@ void FileLoader::update_priority(int8 priority) {
}
void FileLoader::update_resources(const ResourceState &other) {
resource_state_.update_slave(other);
VLOG(files) << "update resources " << resource_state_;
VLOG(files) << "Update resources " << resource_state_;
loop();
}
void FileLoader::set_ordered_flag(bool flag) {
@ -214,7 +214,7 @@ void FileLoader::update_estimated_limit() {
}
auto estimated_extra = parts_manager_.get_estimated_extra();
resource_state_.update_estimated_limit(estimated_extra);
VLOG(files) << "update estimated limit " << estimated_extra;
VLOG(files) << "Update estimated limit " << estimated_extra;
if (!resource_manager_.empty()) {
keep_fd_flag(narrow_cast<uint64>(resource_state_.active_limit()) >= parts_manager_.get_part_size());
send_closure(resource_manager_, &ResourceManager::update_resources, resource_state_);

View File

@ -694,9 +694,9 @@ FileManager::FileManager(unique_ptr<Context> context) : context_(std::move(conte
if (status.is_error()) {
auto r_stat = stat(path);
if (r_stat.is_ok() && r_stat.ok().is_dir_) {
LOG(ERROR) << "mkdir " << tag("path", path) << " failed " << status << ", but directory exists";
LOG(ERROR) << "Creation of directory \"" << path << "\" failed with " << status << ", but directory exists";
} else {
LOG(ERROR) << "mkdir " << tag("path", path) << " failed " << status;
LOG(ERROR) << "Creation of directory \"" << path << "\" failed with " << status;
}
}
#if TD_ANDROID
@ -1328,7 +1328,7 @@ Result<FileId> FileManager::merge(FileId x_file_id, FileId y_file_id, bool no_sy
FileNodePtr other_node = nodes[other_node_i];
auto file_view = FileView(node);
LOG(DEBUG) << "x_node->pmc_id_ = " << x_node->pmc_id_.get() << ", y_node->pmc_id_ = " << y_node->pmc_id_.get()
LOG(DEBUG) << "Have x_node->pmc_id_ = " << x_node->pmc_id_.get() << ", y_node->pmc_id_ = " << y_node->pmc_id_.get()
<< ", x_node_size = " << x_node->file_ids_.size() << ", y_node_size = " << y_node->file_ids_.size()
<< ", node_i = " << node_i << ", local_i = " << local_i << ", remote_i = " << remote_i
<< ", generate_i = " << generate_i << ", size_i = " << size_i << ", remote_name_i = " << remote_name_i
@ -1948,7 +1948,7 @@ void FileManager::run_download(FileNodePtr node) {
// If file reference is needed
if (!file_view.has_active_download_remote_location()) {
VLOG(file_references) << "run_download: Do not have valid file_reference for file " << file_id;
VLOG(file_references) << "Do not have valid file_reference for file " << file_id;
QueryId id = queries_container_.create(Query{file_id, Query::DownloadWaitFileReferece});
node->download_id_ = id;
if (node->download_was_update_file_reference_) {
@ -1965,8 +1965,7 @@ void FileManager::run_download(FileNodePtr node) {
} else {
error = res.move_as_error();
}
VLOG(file_references) << "run_download: Got result from FileSourceManager for file " << file_id << ": "
<< error;
VLOG(file_references) << "Got result from FileSourceManager for file " << file_id << ": " << error;
send_closure(actor_id, &FileManager::on_error, id, std::move(error));
}));
return;

View File

@ -210,7 +210,7 @@ void FileUploader::on_error(Status status) {
}
Status FileUploader::generate_iv_map() {
LOG(INFO) << "generate iv_map " << generate_offset_ << " " << local_size_;
LOG(INFO) << "Generate iv_map " << generate_offset_ << " " << local_size_;
auto part_size = get_part_size();
auto encryption_key = FileEncryptionKey(encryption_key_.key_slice(), generate_iv_);
BufferSlice bytes(part_size);

View File

@ -51,13 +51,13 @@ void ResourceManager::update_resources(const ResourceState &resource_state) {
}
auto node = (*node_ptr).get();
CHECK(node);
VLOG(files) << "before total: " << resource_state_;
VLOG(files) << "before " << tag("node_id", node_id) << ": " << node->resource_state_;
VLOG(files) << "Before total: " << resource_state_;
VLOG(files) << "Before " << tag("node_id", node_id) << ": " << node->resource_state_;
resource_state_ -= node->resource_state_;
node->resource_state_.update_master(resource_state);
resource_state_ += node->resource_state_;
VLOG(files) << "after total: " << resource_state_;
VLOG(files) << "after " << tag("node_id", node_id) << ": " << node->resource_state_;
VLOG(files) << "After total: " << resource_state_;
VLOG(files) << "After " << tag("node_id", node_id) << ": " << node->resource_state_;
if (mode_ == Mode::Greedy) {
add_to_heap(node);

View File

@ -921,7 +921,7 @@ void ConnectionCreator::client_loop(ClientInfo &client) {
return;
}
VLOG(connections) << "client_loop: " << tag("client", format::as_hex(client.hash));
VLOG(connections) << "In client_loop: " << tag("client", format::as_hex(client.hash));
// Remove expired ready connections
client.ready_connections.erase(
@ -1025,7 +1025,7 @@ void ConnectionCreator::client_loop(ClientInfo &client) {
actor_id(this), client.hash, extra.stat);
if (proxy.use_socks5_proxy() || proxy.use_http_tcp_proxy()) {
VLOG(connections) << "client_loop: create new transparent proxy connection " << extra.debug_str;
VLOG(connections) << "In client_loop: create new transparent proxy connection " << extra.debug_str;
class Callback : public TransparentProxy::Callback {
public:
explicit Callback(Promise<ConnectionData> promise, unique_ptr<detail::StatsCallback> stats_callback)
@ -1070,7 +1070,7 @@ void ConnectionCreator::client_loop(ClientInfo &client) {
std::move(callback), create_reference(token))};
}
} else {
VLOG(connections) << "client_loop: create new direct connection " << extra.debug_str;
VLOG(connections) << "In client_loop: create new direct connection " << extra.debug_str;
ConnectionData data;
data.socket_fd = std::move(socket_fd);

View File

@ -144,7 +144,7 @@ void DcAuthManager::on_result(NetQueryPtr result) {
}
void DcAuthManager::dc_loop(DcInfo &dc) {
VLOG(dc) << "dc_loop " << dc.dc_id << " " << dc.auth_state;
VLOG(dc) << "In dc_loop: " << dc.dc_id << " " << dc.auth_state;
if (dc.auth_state == AuthState::OK) {
return;
}

View File

@ -91,7 +91,6 @@ void NetQueryDelayer::delay(NetQueryPtr query) {
void NetQueryDelayer::wakeup() {
auto link_token = get_link_token();
if (link_token) {
LOG(INFO) << "raw_event";
on_slot_event(link_token);
}
loop();

View File

@ -79,7 +79,7 @@ void PublicRsaKeyWatchdog::on_result(NetQueryPtr net_query) {
has_query_ = false;
yield();
if (net_query->is_error()) {
LOG(ERROR) << "getCdnConfig error " << net_query->move_as_error();
LOG(ERROR) << "Receive error for getCdnConfig: " << net_query->move_as_error();
return;
}

View File

@ -227,7 +227,7 @@ void Session::send(NetQueryPtr &&query) {
query->debug("Session: received from SessionProxy");
query->set_session_id(auth_data_.get_session_id());
VLOG(net_query) << "got query " << query;
VLOG(net_query) << "Got query " << query;
if (query->update_is_ready()) {
return_query(std::move(query));
return;
@ -409,9 +409,9 @@ void Session::on_closed(Status status) {
}
if (status.is_error()) {
LOG(WARNING) << "on_closed: " << status << " " << current_info_->connection->get_name();
LOG(WARNING) << "Session closed: " << status << " " << current_info_->connection->get_name();
} else {
LOG(INFO) << "on_closed: " << status << " " << current_info_->connection->get_name();
LOG(INFO) << "Session closed: " << status << " " << current_info_->connection->get_name();
}
if (status.is_error() && status.code() == -404) {
@ -443,7 +443,7 @@ void Session::on_closed(Status status) {
mark_as_known(it->first, &it->second);
auto &query = it->second.query;
VLOG(net_query) << "resend query (on_disconnected, no ack) " << query;
VLOG(net_query) << "Resend query (on_disconnected, no ack) " << query;
query->set_message_id(0);
query->cancel_slot_.clear_event();
query->set_error(Status::Error(500, PSLICE() << "Session failed: " << status.message()),
@ -466,7 +466,8 @@ void Session::on_closed(Status status) {
void Session::on_session_created(uint64 unique_id, uint64 first_id) {
// TODO: use unique_id
// send updatesTooLong to force getDifference
LOG(INFO) << "new_session_created " << unique_id << " " << first_id;
LOG(INFO) << "New session " << unique_id << " created "
<< " with first message_id " << first_id;
if (is_main_) {
LOG(DEBUG) << "Sending updatesTooLong to force getDifference";
telegram_api::updatesTooLong too_long_;
@ -485,7 +486,7 @@ void Session::on_session_created(uint64 unique_id, uint64 first_id) {
mark_as_known(it->first, &it->second);
auto &query = it->second.query;
VLOG(net_query) << "resend query (on_session_created) " << query;
VLOG(net_query) << "Resend query (on_session_created) " << query;
query->set_message_id(0);
query->cancel_slot_.clear_event();
resend_query(std::move(query));
@ -687,7 +688,7 @@ void Session::on_message_result_error(uint64 id, int error_code, BufferSlice mes
}
Query *query_ptr = &it->second;
VLOG(net_query) << "return query error " << query_ptr->query;
VLOG(net_query) << "Return query error " << query_ptr->query;
cleanup_container(id, query_ptr);
mark_as_known(id, query_ptr);
@ -701,7 +702,7 @@ void Session::on_message_result_error(uint64 id, int error_code, BufferSlice mes
}
void Session::on_message_failed_inner(uint64 id, bool in_container) {
LOG(INFO) << "message inner failed " << id;
LOG(INFO) << "Message inner failed " << id;
auto it = sent_queries_.find(id);
if (it == sent_queries_.end()) {
return;
@ -721,7 +722,7 @@ void Session::on_message_failed_inner(uint64 id, bool in_container) {
}
void Session::on_message_failed(uint64 id, Status status) {
LOG(INFO) << "on_message_failed " << tag("id", id) << tag("status", status);
LOG(INFO) << "Message failed: " << tag("id", id) << tag("status", status);
status.ignore();
auto cit = sent_containers_.find(id);
@ -847,7 +848,7 @@ void Session::connection_send_query(ConnectionInfo *info, NetQueryPtr &&net_quer
LOG(FATAL) << "Failed to send query: " << r_message_id.error();
}
message_id = r_message_id.ok();
VLOG(net_query) << "send query to connection " << net_query << " [msg_id:" << format::as_hex(message_id) << "]"
VLOG(net_query) << "Send query to connection " << net_query << " [msg_id:" << format::as_hex(message_id) << "]"
<< tag("invoke_after", format::as_hex(invoke_after_id));
net_query->set_message_id(message_id);
net_query->cancel_slot_.clear_event();
@ -855,7 +856,7 @@ void Session::connection_send_query(ConnectionInfo *info, NetQueryPtr &&net_quer
net_query->debug_unknown = false;
net_query->debug_ack = 0;
if (!net_query->cancel_slot_.empty()) {
LOG(DEBUG) << "set event for net_query cancellation " << tag("message_id", format::as_hex(message_id));
LOG(DEBUG) << "Set event for net_query cancellation " << tag("message_id", format::as_hex(message_id));
net_query->cancel_slot_.set_event(EventCreator::raw(actor_id(), message_id));
}
auto status = sent_queries_.emplace(
@ -965,8 +966,7 @@ void Session::connection_open_finish(ConnectionInfo *info,
}
}
auto name = PSTRING() << get_name() << "::Connect::" << mode_name << "::" << raw_connection->debug_str_;
LOG(INFO) << "connection_open_finish: " << name;
//LOG(ERROR) << "connection_open_finish: " << name;
LOG(INFO) << "Finished to open connection " << name;
info->connection = make_unique<mtproto::SessionConnection>(mode, std::move(raw_connection), &auth_data_);
info->connection->set_online(connection_online_flag_, is_main_);
info->connection->set_name(name);

View File

@ -210,15 +210,15 @@ void SessionProxy::update_auth_state() {
}
void SessionProxy::on_tmp_auth_key_updated(mtproto::AuthKey auth_key) {
string state;
Slice state;
if (auth_key.empty()) {
state = "Empty";
state = Slice("Empty");
} else if (auth_key.auth_flag()) {
state = "OK";
state = Slice("OK");
} else {
state = "NoAuth";
state = Slice("NoAuth");
}
LOG(WARNING) << "tmp_auth_key " << auth_key.id() << ": " << state;
LOG(WARNING) << "Have tmp_auth_key " << auth_key.id() << ": " << state;
tmp_auth_key_ = std::move(auth_key);
}
void SessionProxy::on_server_salt_updated(std::vector<mtproto::ServerSalt> server_salts) {

View File

@ -76,7 +76,7 @@ class TempAuthKeyWatchdog : public NetQueryCallback {
void need_sync() {
need_sync_ = true;
try_sync();
LOG(DEBUG) << "need sync";
LOG(DEBUG) << "Need sync temp auth keys";
}
void try_sync() {
@ -88,12 +88,12 @@ class TempAuthKeyWatchdog : public NetQueryCallback {
if (sync_at_ == 0) {
sync_at_ = now + SYNC_WAIT_MAX;
}
LOG(DEBUG) << "set timeout";
LOG(DEBUG) << "Set sync timeout";
set_timeout_at(min(sync_at_, now + SYNC_WAIT));
}
void timeout_expired() override {
LOG(DEBUG) << "timeout expired";
LOG(DEBUG) << "Sync timeout expired";
CHECK(!run_sync_);
if (!need_sync_) {
LOG(ERROR) << "Do not need sync..";
@ -120,10 +120,10 @@ class TempAuthKeyWatchdog : public NetQueryCallback {
if (G()->close_flag()) {
return;
}
LOG(ERROR) << "auth_dropTempAuthKeys failed " << query->error();
LOG(ERROR) << "Receive error for auth_dropTempAuthKeys: " << query->error();
need_sync_ = true;
} else {
LOG(INFO) << "auth_dropTempAuthKeys OK";
LOG(INFO) << "Receive OK for auth_dropTempAuthKeys";
}
try_sync();
}

View File

@ -12,21 +12,21 @@
class Worker : public td::Actor {
public:
void ping(int x) {
LOG(ERROR) << "got ping " << x;
LOG(ERROR) << "Got ping " << x;
}
};
class MainActor : public td::Actor {
public:
void start_up() override {
LOG(ERROR) << "start up";
LOG(ERROR) << "Start up";
set_timeout_in(10);
worker_ = td::create_actor_on_scheduler<Worker>("Worker", 1);
send_closure(worker_, &Worker::ping, 123);
}
void timeout_expired() override {
LOG(ERROR) << "timeout expired";
LOG(ERROR) << "Timeout expired";
td::Scheduler::instance()->finish();
}

View File

@ -168,13 +168,13 @@ inline CSlice ActorInfo::get_name() const {
}
inline void ActorInfo::start_run() {
VLOG(actor) << "start_run: " << *this;
VLOG(actor) << "Start run actor: " << *this;
LOG_CHECK(!is_running_) << "Recursive call of actor " << tag("name", get_name());
is_running_ = true;
}
inline void ActorInfo::finish_run() {
is_running_ = false;
VLOG(actor) << "stop_run: " << *this;
VLOG(actor) << "Stop run actor: " << *this;
}
inline bool ActorInfo::is_running() const {

View File

@ -450,7 +450,7 @@ void Scheduler::run_poll(Timestamp timeout) {
}
void Scheduler::run_mailbox() {
VLOG(actor) << "run mailbox : begin";
VLOG(actor) << "Run mailbox : begin";
ListNode actors_list = std::move(ready_actors_list_);
while (!actors_list.empty()) {
ListNode *node = actors_list.get();
@ -459,7 +459,7 @@ void Scheduler::run_mailbox() {
inc_wait_generation();
flush_mailbox(actor_info, static_cast<void (*)(ActorInfo *)>(nullptr), static_cast<Event (*)()>(nullptr));
}
VLOG(actor) << "run mailbox : finish " << actor_count_;
VLOG(actor) << "Run mailbox : finish " << actor_count_;
//Useful for debug, but O(ActorsCount) check

View File

@ -346,7 +346,7 @@ inline void Scheduler::wakeup() {
inline Timestamp Scheduler::run_events() {
Timestamp res;
VLOG(actor) << "run events " << sched_id_ << " " << tag("pending", pending_events_.size())
VLOG(actor) << "Run events " << sched_id_ << " " << tag("pending", pending_events_.size())
<< tag("actors", actor_count_);
do {
run_mailbox();

View File

@ -506,7 +506,7 @@ Status Binlog::load_binlog(const Callback &callback, const Callback &debug_callb
break;
}
auto need_size = r_need_size.move_as_ok();
// LOG(ERROR) << "need size = " << need_size;
// LOG(ERROR) << "Need size = " << need_size;
if (need_size == 0) {
if (IGNORE_ERASE_HACK && event.type_ == BinlogEvent::ServiceTypes::Empty &&
(event.flags_ & BinlogEvent::Flags::Rewrite) != 0) {
@ -655,7 +655,7 @@ void Binlog::do_reindex() {
<< fd_size_ << ' ' << detail::file_size(path_) << ' ' << fd_events_ << ' ' << path_;
double ratio = static_cast<double>(start_size) / static_cast<double>(finish_size + 1);
LOG(INFO) << "regenerate index " << tag("name", path_) << tag("time", format::as_time(finish_time - start_time))
LOG(INFO) << "Regenerate index " << tag("name", path_) << tag("time", format::as_time(finish_time - start_time))
<< tag("before_size", format::as_size(start_size)) << tag("after_size", format::as_size(finish_size))
<< tag("ratio", ratio) << tag("before_events", start_events) << tag("after_events", finish_events);

View File

@ -21,13 +21,13 @@ class BinlogActor : public Actor {
void close(Promise<> promise) {
binlog_->close().ensure();
promise.set_value(Unit());
LOG(INFO) << "close: done";
LOG(INFO) << "Finished closing binlog";
stop();
}
void close_and_destroy(Promise<> promise) {
binlog_->close_and_destroy().ensure();
promise.set_value(Unit());
LOG(INFO) << "close_and_destroy: done";
LOG(INFO) << "Finished closing and destroying binlog";
stop();
}

View File

@ -93,7 +93,7 @@ void HttpConnectionBase::loop() {
auto r = fd_.flush_read();
if (r.is_error()) {
if (!begins_with(r.error().message(), "SSL error {336134278")) { // if error is not yet outputed
LOG(INFO) << "flush_read error: " << r.error();
LOG(INFO) << "Receive flush_read error: " << r.error();
}
on_error(Status::Error(r.error().public_message()));
return stop();
@ -132,7 +132,7 @@ void HttpConnectionBase::loop() {
LOG(DEBUG) << "Can write to the connection";
auto r = fd_.flush_write();
if (r.is_error()) {
LOG(INFO) << "flush_write error: " << r.error();
LOG(INFO) << "Receive flush_write error: " << r.error();
on_error(Status::Error(r.error().public_message()));
}
if (close_after_write_ && !fd_.need_flush_write()) {

View File

@ -517,7 +517,7 @@ void HttpReader::process_header(MutableSlice header_name, MutableSlice header_va
header_name = trim(header_name);
header_value = trim(header_value); // TODO need to remove "\r\n" from value
to_lower_inplace(header_name);
LOG(DEBUG) << "process_header [" << header_name << "=>" << header_value << "]";
LOG(DEBUG) << "Process header [" << header_name << "=>" << header_value << "]";
query_->headers_.emplace_back(header_name, header_value);
// TODO: check if protocol is HTTP/1.1
query_->keep_alive_ = true;

View File

@ -172,7 +172,7 @@ Result<size_t> BufferedFd<FdT>::flush_read(size_t max_read) {
if (result) {
// TODO: faster sync is possible if you owns writer.
input_reader_.sync_with_writer();
LOG(DEBUG) << "flush_read: +" << format::as_size(result) << tag("total", format::as_size(input_reader_.size()));
LOG(DEBUG) << "Flush read: +" << format::as_size(result) << tag("total", format::as_size(input_reader_.size()));
}
return result;
}
@ -181,7 +181,7 @@ template <class FdT>
Result<size_t> BufferedFd<FdT>::flush_write() {
TRY_RESULT(result, Parent::flush_write());
if (result) {
LOG(DEBUG) << "flush_write: +" << format::as_size(result) << tag("left", format::as_size(output_reader_.size()));
LOG(DEBUG) << "Flush write: +" << format::as_size(result) << tag("left", format::as_size(output_reader_.size()));
}
return result;
}

View File

@ -162,7 +162,7 @@ void KQueue::run(int timeout_ms) {
LOG(FATAL) << "EV_ERROR in kqueue is not supported";
}
VLOG(fd) << "Event [fd:" << event->ident << "] [filter:" << event->filter << "] [udata: " << event->udata << "]";
// LOG(WARNING) << "event->ident = " << event->ident << "event->filter = " << event->filter;
// LOG(WARNING) << "Have event->ident = " << event->ident << "event->filter = " << event->filter;
auto pollable_fd = PollableFd::from_list_node(static_cast<ListNode *>(event->udata));
pollable_fd.add_flags(flags);
pollable_fd.release_as_list_node();

View File

@ -501,7 +501,7 @@ TEST(DB, persistent_key_value) {
}
void start_up() override {
LOG(INFO) << "start_up";
LOG(INFO) << "Start up";
kv_->impl().init("test_pmc").ensure();
for (int i = 0; i < threads_n_; i++) {
create_actor_on_scheduler<Worker>("Worker", i + 1, actor_shared(this, 2), kv_, &queries_->at(i), &res_->at(i))
@ -510,11 +510,11 @@ TEST(DB, persistent_key_value) {
}
void tear_down() override {
LOG(INFO) << "tear_down";
LOG(INFO) << "Tear down";
// kv_->impl().close();
}
void hangup_shared() override {
LOG(INFO) << "hangup";
LOG(INFO) << "Hang up";
ref_cnt_--;
if (ref_cnt_ == 0) {
kv_->impl().close();

View File

@ -690,7 +690,7 @@ class Master : public Actor {
}
void on_binlog_replay_finish() {
ready_ = true;
LOG(INFO) << "on_binlog_replay_finish!";
LOG(INFO) << "Finish replay binlog";
send_closure(actor_, &SecretChatActor::binlog_replay_finish);
for (auto &event : pending_events_) {
send_event(actor_, std::move(event));
@ -868,16 +868,16 @@ class Master : public Actor {
}
void send_ping(int id, int cnt) {
if (cnt % 200 == 0) {
LOG(ERROR) << "send ping " << tag("id", id) << tag("cnt", cnt);
LOG(ERROR) << "Send ping " << tag("id", id) << tag("cnt", cnt);
} else {
LOG(INFO) << "send ping " << tag("id", id) << tag("cnt", cnt);
LOG(INFO) << "Send ping " << tag("id", id) << tag("cnt", cnt);
}
string text = PSTRING() << "PING: " << cnt;
send_message(id, std::move(text));
}
void send_message(int id, string text) {
auto random_id = Random::secure_int64();
LOG(INFO) << "send message: " << tag("id", id) << tag("text", text) << tag("random_id", random_id);
LOG(INFO) << "Send message: " << tag("id", id) << tag("text", text) << tag("random_id", random_id);
sent_messages_[random_id] = Message{id, text};
send_closure(get_by_id(id), &SecretChatProxy::send_message,
secret_api::make_object<secret_api::decryptedMessage>(0, random_id, 0, text, Auto(), Auto(), Auto(),
@ -904,7 +904,7 @@ class Master : public Actor {
// We can't loose updates yet :(
auto crc = crc64(data.as_slice());
LOG(INFO) << "send SecretChatProxy::add_inbound_message" << tag("crc", crc);
LOG(INFO) << "Send SecretChatProxy::add_inbound_message" << tag("crc", crc);
send_closure(to(), &SecretChatProxy::add_inbound_message, narrow_cast<int32>(3 - get_link_token()), std::move(data),
crc);
}
@ -931,7 +931,7 @@ class Master : public Actor {
}
void on_send_message_error(int64 random_id, Status error, Promise<> promise) {
promise.set_value(Unit());
LOG(INFO) << "on_send_message_error: " << tag("random_id", random_id) << error;
LOG(INFO) << "Receive send message error: " << tag("random_id", random_id) << error;
auto it = sent_messages_.find(random_id);
if (it == sent_messages_.end()) {
LOG(INFO) << "TODO: try to fix errors about message after it is sent";
@ -944,7 +944,7 @@ class Master : public Actor {
}
void on_send_message_ok(int64 random_id, Promise<> promise) {
promise.set_value(Unit());
LOG(INFO) << "on_send_message_ok: " << tag("random_id", random_id);
LOG(INFO) << "Receive send message ok: " << tag("random_id", random_id);
auto it = sent_messages_.find(random_id);
if (it == sent_messages_.end()) {
LOG(INFO) << "TODO: try to fix errors about message after it is sent";

View File

@ -561,7 +561,7 @@ class TestFileGenerated : public Task {
this->send_query(make_tl_object<td_api::finishFileGeneration>(id, nullptr),
[](auto result) { check_td_error(result); });
} else {
LOG(FATAL) << "unknown " << tag("conversion", conversion);
LOG(FATAL) << "Unknown " << tag("conversion", conversion);
}
}