From 5078baea2b1ca3684ea582eda6ac4cea0924ce43 Mon Sep 17 00:00:00 2001 From: pasta Date: Tue, 19 Nov 2024 10:38:44 -0600 Subject: [PATCH] fix(test): wait for chainlock before mining a block we expect to include said chainlock Most of the time, while generating the cycle quorum, there is sufficient time to generate a chainlock; however, this is racey, and I've observed locally where the block gets generated before a chainlock is present and as such `test_coinbase_best_cl` fails. We should instead wait for the chainlock first, and then mine the block. This was we can ensure the mined block will include that chainlock. This was observed locally maybe 1/10 times or so --- test/functional/feature_llmq_chainlocks.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/functional/feature_llmq_chainlocks.py b/test/functional/feature_llmq_chainlocks.py index 03807ddd2ba30..593ebb9afa1e8 100755 --- a/test/functional/feature_llmq_chainlocks.py +++ b/test/functional/feature_llmq_chainlocks.py @@ -56,11 +56,10 @@ def run_test(self): self.move_to_next_cycle() self.log.info("Cycle H+2C height:" + str(self.nodes[0].getblockcount())) self.mine_cycle_quorum(llmq_type_name="llmq_test_dip0024", llmq_type=103) - - - self.log.info("Mine single block, wait for chainlock") - self.generate(self.nodes[0], 1, sync_fun=self.no_op) self.wait_for_chainlocked_block_all_nodes(self.nodes[0].getbestblockhash()) + + self.log.info("Mine single block, ensure it includes latest chainlock") + self.generate(self.nodes[0], 1, sync_fun=self.sync_blocks) self.test_coinbase_best_cl(self.nodes[0]) # ChainLock locks all the blocks below it so nocl_block_hash should be locked too