in platform/statistic/stats.cpp [299:365]
void Stats::SendSummary() {
if (!enable_resview) {
return;
}
transaction_summary_.execution_time = std::chrono::system_clock::now();
// Convert Transaction Summary to JSON
summary_json_["replica_id"] = transaction_summary_.replica_id;
summary_json_["ip"] = transaction_summary_.ip;
summary_json_["port"] = transaction_summary_.port;
summary_json_["primary_id"] = transaction_summary_.primary_id;
summary_json_["propose_pre_prepare_time"] =
transaction_summary_.request_pre_prepare_state_time.time_since_epoch()
.count();
summary_json_["prepare_time"] =
transaction_summary_.prepare_state_time.time_since_epoch().count();
summary_json_["commit_time"] =
transaction_summary_.commit_state_time.time_since_epoch().count();
summary_json_["execution_time"] =
transaction_summary_.execution_time.time_since_epoch().count();
for (size_t i = 0;
i < transaction_summary_.prepare_message_count_times_list.size(); i++) {
summary_json_["prepare_message_timestamps"].push_back(
transaction_summary_.prepare_message_count_times_list[i]
.time_since_epoch()
.count());
}
for (size_t i = 0;
i < transaction_summary_.commit_message_count_times_list.size(); i++) {
summary_json_["commit_message_timestamps"].push_back(
transaction_summary_.commit_message_count_times_list[i]
.time_since_epoch()
.count());
}
summary_json_["txn_number"] = transaction_summary_.txn_number;
for (size_t i = 0; i < transaction_summary_.txn_command.size(); i++) {
summary_json_["txn_commands"].push_back(
transaction_summary_.txn_command[i]);
}
for (size_t i = 0; i < transaction_summary_.txn_key.size(); i++) {
summary_json_["txn_keys"].push_back(transaction_summary_.txn_key[i]);
}
for (size_t i = 0; i < transaction_summary_.txn_value.size(); i++) {
summary_json_["txn_values"].push_back(transaction_summary_.txn_value[i]);
}
summary_json_["ext_cache_hit_ratio"] =
transaction_summary_.ext_cache_hit_ratio_;
consensus_history_[std::to_string(transaction_summary_.txn_number)] =
summary_json_;
LOG(ERROR) << summary_json_.dump();
// Reset Transaction Summary Parameters
transaction_summary_.request_pre_prepare_state_time =
std::chrono::system_clock::time_point::min();
transaction_summary_.prepare_state_time =
std::chrono::system_clock::time_point::min();
transaction_summary_.commit_state_time =
std::chrono::system_clock::time_point::min();
transaction_summary_.execution_time =
std::chrono::system_clock::time_point::min();
transaction_summary_.prepare_message_count_times_list.clear();
transaction_summary_.commit_message_count_times_list.clear();
summary_json_.clear();
}