Skip to content

Commit 80f5cca

Browse files
committed
fix: wait for stackerDB convergence
This was another cause of flakiness in `net::tests::convergence` tests.
1 parent d9672e3 commit 80f5cca

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

stackslib/src/net/tests/convergence.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,6 +1053,45 @@ fn run_topology_test_ex<F>(
10531053
(100.0 * (peer_counts as f64)) / ((peer_count * peer_count) as f64),
10541054
);
10551055

1056+
// wait for stacker DBs to converge
1057+
for (i, peer) in peers.iter().enumerate() {
1058+
if i % 2 != 0 {
1059+
continue;
1060+
}
1061+
for (j, other_peer) in peers.iter().enumerate() {
1062+
if i == j {
1063+
continue;
1064+
}
1065+
1066+
let all_neighbors =
1067+
PeerDB::get_all_peers(other_peer.network.peerdb.conn()).unwrap();
1068+
1069+
if (all_neighbors.len() as u64) < ((peer_count - 1) as u64) {
1070+
// this is a simulated-NAT'ed node -- it won't learn about other NAT'ed nodes'
1071+
// DBs
1072+
continue;
1073+
}
1074+
1075+
if j % 2 != 0 {
1076+
continue; // this peer doesn't support Stacker DBs
1077+
}
1078+
let dbs = peer
1079+
.network
1080+
.peerdb
1081+
.get_peer_stacker_dbs(&other_peer.config.to_neighbor())
1082+
.unwrap();
1083+
if dbs.is_empty() {
1084+
test_debug!(
1085+
"waiting for peer {i} {} to learn about peer {j} {}'s stacker DBs",
1086+
&peer.config.to_neighbor(),
1087+
&other_peer.config.to_neighbor()
1088+
);
1089+
finished = false;
1090+
break;
1091+
}
1092+
}
1093+
}
1094+
10561095
if finished {
10571096
break;
10581097
}

0 commit comments

Comments
 (0)