Skip to content

Commit 1ac017d

Browse files
argakiigrkeene
authored andcommitted
Add confirmation stats and per block duration to confirmation_history (#1433)
1 parent f677d76 commit 1ac017d

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

rai/node/node.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2804,6 +2804,7 @@ rai::election::election (rai::node & node_a, std::shared_ptr<rai::block> block_a
28042804
confirmation_action (confirmation_action_a),
28052805
node (node_a),
28062806
root (block_a->root ()),
2807+
election_start (std::chrono::steady_clock::now ()),
28072808
status ({ block_a, 0 }),
28082809
confirmed (false),
28092810
stopped (false),
@@ -2829,6 +2830,7 @@ void rai::election::confirm_once (rai::transaction const & transaction_a)
28292830
{
28302831
if (!confirmed.exchange (true))
28312832
{
2833+
status.election_duration = std::chrono::duration_cast<std::chrono::duration<double>> (std::chrono::steady_clock::now () - election_start);
28322834
auto winner_l (status.winner);
28332835
auto node_l (node.shared ());
28342836
auto confirmation_action_l (confirmation_action);

rai/node/node.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class election_status
2929
public:
3030
std::shared_ptr<rai::block> winner;
3131
rai::amount tally;
32+
std::chrono::duration<double> election_duration;
3233
};
3334
class vote_info
3435
{
@@ -68,6 +69,7 @@ class election : public std::enable_shared_from_this<rai::election>
6869
std::unordered_map<rai::account, std::shared_ptr<rai::vote>> our_last_votes;
6970
std::unordered_map<rai::block_hash, std::shared_ptr<rai::block>> blocks;
7071
rai::block_hash root;
72+
std::chrono::steady_clock::time_point election_start;
7173
rai::election_status status;
7274
std::atomic<bool> confirmed;
7375
bool stopped;

rai/node/rpc.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1442,16 +1442,26 @@ void rai::rpc_handler::confirmation_active ()
14421442
void rai::rpc_handler::confirmation_history ()
14431443
{
14441444
boost::property_tree::ptree elections;
1445+
boost::property_tree::ptree confirmation_stats;
1446+
std::chrono::duration<double> running_total (0);
14451447
{
14461448
std::lock_guard<std::mutex> lock (node.active.mutex);
14471449
for (auto i (node.active.confirmed.begin ()), n (node.active.confirmed.end ()); i != n; ++i)
14481450
{
14491451
boost::property_tree::ptree election;
14501452
election.put ("hash", i->winner->hash ().to_string ());
1453+
election.put ("duration", i->election_duration.count ());
14511454
election.put ("tally", i->tally.to_string_dec ());
14521455
elections.push_back (std::make_pair ("", election));
1456+
running_total += i->election_duration;
14531457
}
14541458
}
1459+
confirmation_stats.put ("count", elections.size ());
1460+
if (elections.size () >= 1)
1461+
{
1462+
confirmation_stats.put ("average", (running_total.count ()) / elections.size ());
1463+
}
1464+
response_l.add_child ("confirmation_stats", confirmation_stats);
14551465
response_l.add_child ("confirmations", elections);
14561466
response_errors ();
14571467
}

0 commit comments

Comments
 (0)