Report duration in current state.

This commit is contained in:
Mark Travis
2018-11-14 22:14:53 -08:00
committed by Nik Bougalis
parent ad5c5f1969
commit fbdbffed67
2 changed files with 19 additions and 5 deletions

View File

@@ -58,6 +58,9 @@
#include <ripple/basics/make_lock.h>
#include <boost/asio/steady_timer.hpp>
#include <boost/asio/ip/host_name.hpp>
#include <string>
#include <tuple>
#include <utility>
namespace ripple {
@@ -149,12 +152,19 @@ class NetworkOPsImp final
*/
void mode (OperatingMode om);
/**
* Json-formatted state accounting data.
* 1st member: state accounting object.
* 2nd member: duration in current state.
*/
using StateCountersJson = std::pair <Json::Value, std::string>;
/**
* Output state counters in JSON format.
*
* @return JSON object.
*/
Json::Value json() const;
StateCountersJson json() const;
};
//! Server fees published on `server` subscription
@@ -2353,7 +2363,8 @@ Json::Value NetworkOPsImp::getServerInfo (bool human, bool admin, bool counters)
info[jss::published_ledger] = lpPublished->info().seq;
}
info[jss::state_accounting] = accounting_.json();
std::tie(info[jss::state_accounting],
info[jss::server_state_duration_us]) = accounting_.json();
info[jss::uptime] = UptimeClock::now().time_since_epoch().count();
info[jss::jq_trans_overflow] = std::to_string(
app_.overlay().getJqTransOverflow());
@@ -3338,7 +3349,8 @@ void NetworkOPsImp::StateAccounting::mode (OperatingMode om)
start_ = now;
}
Json::Value NetworkOPsImp::StateAccounting::json() const
NetworkOPsImp::StateAccounting::StateCountersJson
NetworkOPsImp::StateAccounting::json() const
{
std::unique_lock<std::mutex> lock (mutex_);
@@ -3348,8 +3360,9 @@ Json::Value NetworkOPsImp::StateAccounting::json() const
lock.unlock();
counters[mode].dur += std::chrono::duration_cast<
auto const current = std::chrono::duration_cast<
std::chrono::microseconds>(std::chrono::system_clock::now() - start);
counters[mode].dur += current;
Json::Value ret = Json::objectValue;
@@ -3362,7 +3375,7 @@ Json::Value NetworkOPsImp::StateAccounting::json() const
state[jss::duration_us] = std::to_string(counters[i].dur.count());
}
return ret;
return {ret, std::to_string(current.count())};
}
//------------------------------------------------------------------------------

View File

@@ -400,6 +400,7 @@ JSS ( seq ); // in: LedgerEntry;
// ValidatorList
JSS ( seqNum ); // out: LedgerToJson
JSS ( server_state ); // out: NetworkOPs
JSS ( server_state_duration_us ); // out: NetworkOPs
JSS ( server_status ); // out: NetworkOPs
JSS ( settle_delay ); // out: AccountChannels
JSS ( severity ); // in: LogLevel