@@ -241,6 +241,7 @@ async fn push_commit(client: &TestSubduction, sed_id: SedimentreeId, payload: &[
241241}
242242
243243#[ tokio:: test]
244+ #[ cfg_attr( target_os = "macos" , ignore = "iroh QUIC unreliable on macOS CI runners" ) ]
244245async fn iroh_sync_between_two_cli_servers ( ) {
245246 let tmp_a = tempfile:: tempdir ( ) . expect ( "tmpdir A" ) ;
246247 let tmp_b = tempfile:: tempdir ( ) . expect ( "tmpdir B" ) ;
@@ -290,27 +291,32 @@ async fn iroh_sync_between_two_cli_servers() {
290291 push_commit ( & client_b, sed_id, b"commit from server B" ) . await ;
291292
292293 // ── Poll until both servers have both commits ────────────────────────
293- // The server runs full_sync every 5 seconds. Rather than guessing how
294- // long to sleep, we retry with fresh verify clients until both servers
295- // report >= 2 commits, or we hit an overall timeout.
296- let sync_deadline = tokio:: time:: Instant :: now ( ) + Duration :: from_secs ( 60 ) ;
297- let mut client_seed: u8 = 0xE0 ;
294+ // The server runs full_sync every 5 seconds over iroh. We reuse a
295+ // single verify client per server to avoid connection churn (each
296+ // fresh client spawns poll/send tasks that linger), then call
297+ // sync_all on each iteration to pull the latest state.
298+ let sync_deadline = tokio:: time:: Instant :: now ( ) + Duration :: from_secs ( 90 ) ;
299+
300+ let verify_a = connect_to_server ( & url_a, 0xE0 , service_name) . await ;
301+ let verify_b = connect_to_server ( & url_b, 0xE1 , service_name) . await ;
298302
299303 loop {
300- tokio:: time:: sleep ( Duration :: from_millis ( 500 ) ) . await ;
304+ tokio:: time:: sleep ( Duration :: from_secs ( 2 ) ) . await ;
301305
302- let verify_a = connect_to_server ( & url_a, client_seed, service_name) . await ;
303- client_seed = client_seed. wrapping_add ( 1 ) ;
304- let _result_a = verify_a. sync_all ( sed_id, true , Some ( SYNC_TIMEOUT ) ) . await ;
306+ let result_a = verify_a. sync_all ( sed_id, true , Some ( SYNC_TIMEOUT ) ) . await ;
307+ if let Err ( ref e) = result_a {
308+ eprintln ! ( "verify_a sync_all error: {e:?}" ) ;
309+ }
305310 let count_a = verify_a
306311 . get_commits ( sed_id)
307312 . await
308313 . as_ref ( )
309314 . map_or ( 0 , Vec :: len) ;
310315
311- let verify_b = connect_to_server ( & url_b, client_seed, service_name) . await ;
312- client_seed = client_seed. wrapping_add ( 1 ) ;
313- let _result_b = verify_b. sync_all ( sed_id, true , Some ( SYNC_TIMEOUT ) ) . await ;
316+ let result_b = verify_b. sync_all ( sed_id, true , Some ( SYNC_TIMEOUT ) ) . await ;
317+ if let Err ( ref e) = result_b {
318+ eprintln ! ( "verify_b sync_all error: {e:?}" ) ;
319+ }
314320 let count_b = verify_b
315321 . get_commits ( sed_id)
316322 . await
0 commit comments