From 539182a66c16a648d43d93cc9deeb356eae664de Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Thu, 20 Feb 2025 10:37:56 -0600 Subject: [PATCH 1/3] Log producer of blocks on fork switch. Log double produced blocks. --- libraries/chain/controller.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libraries/chain/controller.cpp b/libraries/chain/controller.cpp index 85e67c17f6..f59b0ff522 100644 --- a/libraries/chain/controller.cpp +++ b/libraries/chain/controller.cpp @@ -4398,9 +4398,13 @@ struct controller_impl { if( switch_fork ) { auto head_fork_comp_str = block_handle_accessor::apply(chain_head, [](auto& head) -> std::string { return log_fork_comparison(*head); }); - ilog("switching forks from ${chid} (block number ${chn}) ${c} to ${nhid} (block number ${nhn}) ${n}", - ("chid", chain_head.id())("chn", chain_head.block_num())("nhid", new_head->id())("nhn", new_head->block_num()) + ilog("switching forks from ${chid} (block number ${chn} ${cp}) ${c} to ${nhid} (block number ${nhn} np) ${n}", + ("chid", chain_head.id())("chn", chain_head.block_num())("cp", chain_head.producer()) + ("nhid", new_head->id())("nhn", new_head->block_num())("np", new_head->producer()) ("c", head_fork_comp_str)("n", log_fork_comparison(*new_head))); + if (chain_head.block_num() == new_head->block_num() && chain_head.producer() == new_head->producer()) { + wlog("${p} double produced block ${n}", ("p", new_head->producer())("n", new_head->block_num())); + } // not possible to log transaction specific info when switching forks if (auto dm_logger = get_deep_mind_logger(false)) { From a079d4ffdef48702fd141d382c90e5136f696145 Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Thu, 20 Feb 2025 10:46:36 -0600 Subject: [PATCH 2/3] Add missing ${} --- libraries/chain/controller.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/chain/controller.cpp b/libraries/chain/controller.cpp index f59b0ff522..c95a3d1faa 100644 --- a/libraries/chain/controller.cpp +++ b/libraries/chain/controller.cpp @@ -4398,7 +4398,7 @@ struct controller_impl { if( switch_fork ) { auto head_fork_comp_str = block_handle_accessor::apply(chain_head, [](auto& head) -> std::string { return log_fork_comparison(*head); }); - ilog("switching forks from ${chid} (block number ${chn} ${cp}) ${c} to ${nhid} (block number ${nhn} np) ${n}", + ilog("switching forks from ${chid} (block number ${chn} ${cp}) ${c} to ${nhid} (block number ${nhn} ${np}) ${n}", ("chid", chain_head.id())("chn", chain_head.block_num())("cp", chain_head.producer()) ("nhid", new_head->id())("nhn", new_head->block_num())("np", new_head->producer()) ("c", head_fork_comp_str)("n", log_fork_comparison(*new_head))); From aa670153bd13420d5e6288dab234125159c60c71 Mon Sep 17 00:00:00 2001 From: Lin Huang Date: Thu, 20 Feb 2025 15:34:43 -0500 Subject: [PATCH 3/3] Fix a warning of comparison of integer expressions of different signedness in nonprune_to_prune_on_start test --- tests/block_log.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/block_log.cpp b/tests/block_log.cpp index bb06b79fa4..77df437f07 100644 --- a/tests/block_log.cpp +++ b/tests/block_log.cpp @@ -651,7 +651,7 @@ BOOST_DATA_TEST_CASE(nonprune_to_prune_on_start, bdata::make({1, 1500}) * bdata: const unsigned num_blocks_to_add = prune_blocks*3; unsigned next_block = starting_block == 1 ? 2 : starting_block; - for(unsigned i = 0; i < prune_blocks*3; ++i) + for(auto i = 0; i < prune_blocks*3; ++i) t.add(next_block++, payload_size(), 'z'); t.check_n_bounce([&]() {});