Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CLI commands incorrect ledger cache setup #2794

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 17 additions & 10 deletions nano/nano_node/entry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,8 @@ int main (int argc, char * const * argv)
auto node_flags = nano::inactive_node_flag_defaults ();
nano::update_flags (node_flags, vm);
node_flags.generate_cache.reps = true;
auto inactive_node = nano::default_inactive_node (data_path, vm);
auto node = inactive_node->node;
nano::inactive_node inactive_node (data_path, node_flags);
auto node = inactive_node.node;

auto const hardcoded = node->get_bootstrap_weights ().second;
auto const ledger_unfiltered = node->ledger.cache.rep_weights.get_rep_amounts ();
Expand Down Expand Up @@ -395,8 +395,8 @@ int main (int argc, char * const * argv)
auto node_flags = nano::inactive_node_flag_defaults ();
nano::update_flags (node_flags, vm);
node_flags.generate_cache.reps = true;
auto inactive_node = nano::default_inactive_node (data_path, vm);
auto node = inactive_node->node;
nano::inactive_node inactive_node (data_path, node_flags);
auto node = inactive_node.node;
auto transaction (node->store.tx_begin_read ());
nano::uint128_t total;
auto rep_amounts = node->ledger.cache.rep_weights.get_rep_amounts ();
Expand Down Expand Up @@ -433,8 +433,11 @@ int main (int argc, char * const * argv)
}
else if (vm.count ("debug_account_count"))
{
auto inactive_node = nano::default_inactive_node (data_path, vm);
std::cout << boost::str (boost::format ("Frontier count: %1%\n") % inactive_node->node->ledger.cache.account_count);
auto node_flags = nano::inactive_node_flag_defaults ();
nano::update_flags (node_flags, vm);
node_flags.generate_cache.account_count = true;
nano::inactive_node inactive_node (data_path, node_flags);
std::cout << boost::str (boost::format ("Frontier count: %1%\n") % inactive_node.node->ledger.cache.account_count);
}
else if (vm.count ("debug_mass_activity"))
{
Expand Down Expand Up @@ -1350,10 +1353,14 @@ int main (int argc, char * const * argv)
std::exit (0);
});

auto inactive_node_l = nano::default_inactive_node (data_path, vm);
auto node_flags = nano::inactive_node_flag_defaults ();
nano::update_flags (node_flags, vm);
node_flags.generate_cache.enable_all ();
nano::inactive_node inactive_node_l (data_path, node_flags);

nano::node_rpc_config config;
nano::ipc::ipc_server server (*inactive_node_l->node, config);
auto handler_l (std::make_shared<nano::json_handler> (*inactive_node_l->node, config, command_l.str (), response_handler_l));
nano::ipc::ipc_server server (*inactive_node_l.node, config);
auto handler_l (std::make_shared<nano::json_handler> (*inactive_node_l.node, config, command_l.str (), response_handler_l));
handler_l->process_request ();
}
else if (vm.count ("validate_blocks") || vm.count ("debug_validate_blocks"))
Expand Down Expand Up @@ -1743,7 +1750,7 @@ int main (int argc, char * const * argv)
auto inactive_node = nano::default_inactive_node (data_path, vm);
auto node = inactive_node->node;
auto transaction (node->store.tx_begin_read ());
block_count = node->store.block_count (transaction).sum ();
block_count = node->ledger.cache.block_count;
std::cout << boost::str (boost::format ("Performing bootstrap emulation, %1% blocks in ledger...") % block_count) << std::endl;
for (auto i (node->store.latest_begin (transaction)), n (node->store.latest_end ()); i != n; ++i)
{
Expand Down
2 changes: 2 additions & 0 deletions nano/node/node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1681,6 +1681,8 @@ nano::node_flags const & nano::inactive_node_flag_defaults ()
node_flags.generate_cache.reps = false;
node_flags.generate_cache.cemented_count = false;
node_flags.generate_cache.unchecked_count = false;
node_flags.generate_cache.account_count = false;
node_flags.generate_cache.epoch_2 = false;
node_flags.disable_bootstrap_listener = true;
node_flags.disable_tcp_realtime = true;
return node_flags;
Expand Down
9 changes: 9 additions & 0 deletions nano/secure/common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -858,3 +858,12 @@ nano::block_hash const & nano::unchecked_key::key () const
{
return previous;
}

void nano::generate_cache::enable_all ()
{
reps = true;
cemented_count = true;
unchecked_count = true;
account_count = true;
epoch_2 = true;
}
4 changes: 3 additions & 1 deletion nano/secure/common.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,7 @@ enum class confirmation_height_mode
};

/* Holds flags for various cacheable data. For most CLI operations caching is unnecessary
* (e.g getting the checked block count) so it can be disabled for performance reasons. */
* (e.g getting the cemented block count) so it can be disabled for performance reasons. */
class generate_cache
{
public:
Expand All @@ -496,6 +496,8 @@ class generate_cache
bool unchecked_count = true;
bool account_count = true;
bool epoch_2 = true;

void enable_all ();
};

/* Holds an in-memory cache of various counts */
Expand Down