Skip to content

Commit

Permalink
Improve active_transactions::collect_container_info
Browse files Browse the repository at this point in the history
  • Loading branch information
pwojcikdev committed Sep 5, 2022
1 parent 0211ff6 commit 668bfb7
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 4 deletions.
27 changes: 25 additions & 2 deletions nano/node/active_transactions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -701,22 +701,27 @@ std::unique_ptr<nano::container_info_component> nano::collect_container_info (ac
std::size_t blocks_count;
std::size_t recently_confirmed_count;
std::size_t recently_cemented_count;
std::size_t hinted_count;

{
nano::lock_guard<nano::mutex> guard (active_transactions.mutex);
roots_count = active_transactions.roots.size ();
blocks_count = active_transactions.blocks.size ();
recently_confirmed_count = active_transactions.recently_confirmed.size ();
recently_cemented_count = active_transactions.recently_cemented.size ();
hinted_count = active_transactions.active_hinted_elections_count;
}

auto composite = std::make_unique<container_info_composite> (name);
composite->add_component (std::make_unique<container_info_leaf> (container_info{ "roots", roots_count, sizeof (decltype (active_transactions.roots)::value_type) }));
composite->add_component (std::make_unique<container_info_leaf> (container_info{ "blocks", blocks_count, sizeof (decltype (active_transactions.blocks)::value_type) }));
composite->add_component (std::make_unique<container_info_leaf> (container_info{ "election_winner_details", active_transactions.election_winner_details_size (), sizeof (decltype (active_transactions.election_winner_details)::value_type) }));
composite->add_component (std::make_unique<container_info_leaf> (container_info{ "recently_confirmed", recently_confirmed_count, sizeof (decltype (active_transactions.recently_confirmed.confirmed)::value_type) }));
composite->add_component (std::make_unique<container_info_leaf> (container_info{ "recently_cemented", recently_cemented_count, sizeof (decltype (active_transactions.recently_cemented.cemented)::value_type) }));
composite->add_component (std::make_unique<container_info_leaf> (container_info{ "hinted", hinted_count, 0 }));
composite->add_component (collect_container_info (active_transactions.generator, "generator"));

composite->add_component (active_transactions.recently_confirmed.collect_container_info ("recently_confirmed"));
composite->add_component (active_transactions.recently_cemented.collect_container_info ("recently_cemented"));

return composite;
}

Expand Down Expand Up @@ -775,6 +780,15 @@ nano::recently_confirmed_cache::entry_t nano::recently_confirmed_cache::back ()
return confirmed.back ();
}

std::unique_ptr<nano::container_info_component> nano::recently_confirmed_cache::collect_container_info (const std::string & name)
{
nano::unique_lock<nano::mutex> lock{ mutex };

auto composite = std::make_unique<container_info_composite> (name);
composite->add_component (std::make_unique<container_info_leaf> (container_info{ "confirmed", confirmed.size (), sizeof (decltype (confirmed)::value_type) }));
return composite;
}

/*
* class recently_cemented
*/
Expand Down Expand Up @@ -805,3 +819,12 @@ std::size_t nano::recently_cemented_cache::size () const
nano::lock_guard<nano::mutex> guard{ mutex };
return cemented.size ();
}

std::unique_ptr<nano::container_info_component> nano::recently_cemented_cache::collect_container_info (const std::string & name)
{
nano::unique_lock<nano::mutex> lock{ mutex };

auto composite = std::make_unique<container_info_composite> (name);
composite->add_component (std::make_unique<container_info_leaf> (container_info{ "cemented", cemented.size (), sizeof (decltype (cemented)::value_type) }));
return composite;
}
6 changes: 4 additions & 2 deletions nano/node/active_transactions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ class recently_confirmed_cache final

mutable nano::mutex mutex;

friend std::unique_ptr<container_info_component> collect_container_info (active_transactions &, std::string const &);
public: // Container info
std::unique_ptr<container_info_component> collect_container_info (std::string const &);
};

/*
Expand All @@ -99,7 +100,8 @@ class recently_cemented_cache final

mutable nano::mutex mutex;

friend std::unique_ptr<container_info_component> collect_container_info (active_transactions &, std::string const &);
public: // Container info
std::unique_ptr<container_info_component> collect_container_info (std::string const &);
};

class election_insertion_result final
Expand Down

0 comments on commit 668bfb7

Please sign in to comment.