Skip to content

Commit 8cd9475

Browse files
committed
Merge bitcoin/bitcoin#29893: test: fix intermittent failure in p2p_compactblocks_hb.py
1ae5b20 test: fix intermittent failure in p2p_compactblocks_hb.py (Martin Zumsande) Pull request description: Fixes #29860 As a result of node1 receiving a block, it sends out SENDCMPCT messages to some of its peers to update the high-bandwidth status. We need to wait until those are received and processed by the peers to avoid intermittent failures. Before, we'd only wait until all peers have synced with the new block (within `generate`) which is not sufficient. I could reproduce the failure by adding a `std::this_thread::sleep_for(std::chrono::milliseconds(1000));` sleep to the [net_processing code](https://github.com/bitcoin/bitcoin/blob/c7567d9223a927a88173ff04eeb4f54a5c02b43d/src/net_processing.cpp#L3763) that processes `NetMsgType::SENDCMPCT`. ACKs for top commit: instagibbs: ACK 1ae5b20 alfonsoromanz: Tested ACK 1ae5b20 glozow: ACK 1ae5b20 Tree-SHA512: 47c29616e73a5e0ff966fc231e4f672c1a6892511e5c10a3905b30ad6b2a3d1267fa0a88bd8f64b523fe580199d22a43545c84e361879e5096483152065c4b9a
2 parents c8e3b94 + 1ae5b20 commit 8cd9475

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

test/functional/p2p_compactblocks_hb.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,15 @@ def relay_block_through(self, peer):
3232
self.connect_nodes(peer, 0)
3333
self.generate(self.nodes[0], 1)
3434
self.disconnect_nodes(peer, 0)
35-
status_to = [self.peer_info(1, i)['bip152_hb_to'] for i in range(2, 6)]
36-
status_from = [self.peer_info(i, 1)['bip152_hb_from'] for i in range(2, 6)]
37-
assert_equal(status_to, status_from)
38-
return status_to
35+
36+
def status_to():
37+
return [self.peer_info(1, i)['bip152_hb_to'] for i in range(2, 6)]
38+
39+
def status_from():
40+
return [self.peer_info(i, 1)['bip152_hb_from'] for i in range(2, 6)]
41+
42+
self.wait_until(lambda: status_to() == status_from())
43+
return status_to()
3944

4045
def run_test(self):
4146
self.log.info("Testing reserved high-bandwidth mode slot for outbound peer...")

0 commit comments

Comments
 (0)