Skip to content

Commit cf0120f

Browse files
committed
Merge bitcoin#30880: test: Wait for local services to update in feature_assumeutxo
19f4a7c test: Wait for local services to update in feature_assumeutxo (Fabian Jahr) Pull request description: Closes bitcoin#30878 It seems like there is a race where the block is stored locally and `getblock` does not error anymore, but `ActivateBestChain` has not finished yet, so the local services are not updated yet either. Fix this by waiting for the local services to update. Can be reproduced locally by adding the sleep here: ```cpp ──────────────────────────────────────────────────────────────────────────────────────────────────────────┐ src/validation.cpp:3567: bool Chainstate::ActivateBestChain(BlockValidationState& state, std::shared_ptr< │ ──────────────────────────────────────────────────────────────────────────────────────────────────────────┘ } if (WITH_LOCK(::cs_main, return m_disabled)) { std::this_thread::sleep_for(std::chrono::seconds(10)); // Background chainstate has reached the snapshot base block, so exit. // Restart indexes to resume indexing for all blocks unique to the snapshot ``` ACKs for top commit: maflcko: review-only ACK 19f4a7c achow101: ACK 19f4a7c pablomartin4btc: tACK 19f4a7c furszy: Code review ACK [19f4a7c](bitcoin@19f4a7c). Tree-SHA512: 70dad3795988956c5e20f2d2d895fb56c5e3ce257c7547d3fd729c88949f0e24cb34594da1537bce8794ad02b2db44e7e46e995aa32539cd4dd84c4f1d4bb1c4
2 parents e46bebb + 19f4a7c commit cf0120f

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

test/functional/feature_assumeutxo.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -314,9 +314,9 @@ def test_sync_from_assumeutxo_node(self, snapshot):
314314
self.sync_blocks(nodes=(miner, snapshot_node))
315315
# Check the base snapshot block was stored and ensure node signals full-node service support
316316
self.wait_until(lambda: not try_rpc(-1, "Block not found", snapshot_node.getblock, snapshot_block_hash))
317-
assert 'NETWORK' in snapshot_node.getnetworkinfo()['localservicesnames']
317+
self.wait_until(lambda: 'NETWORK' in snapshot_node.getnetworkinfo()['localservicesnames'])
318318

319-
# Now the snapshot_node is sync, verify the ibd_node can sync from it
319+
# Now that the snapshot_node is synced, verify the ibd_node can sync from it
320320
self.connect_nodes(snapshot_node.index, ibd_node.index)
321321
assert 'NETWORK' in ibd_node.getpeerinfo()[0]['servicesnames']
322322
self.sync_blocks(nodes=(ibd_node, snapshot_node))
@@ -698,7 +698,7 @@ def check_tx_counts(final: bool) -> None:
698698
self.wait_until(lambda: len(n2.getchainstates()['chainstates']) == 1)
699699

700700
# Once background chain sync completes, the full node must start offering historical blocks again.
701-
assert {'NETWORK', 'NETWORK_LIMITED'}.issubset(n2.getnetworkinfo()['localservicesnames'])
701+
self.wait_until(lambda: {'NETWORK', 'NETWORK_LIMITED'}.issubset(n2.getnetworkinfo()['localservicesnames']))
702702

703703
completed_idx_state = {
704704
'basic block filter index': COMPLETE_IDX,

0 commit comments

Comments
 (0)