From 0ad0a6d8de4249f30bf3b471bb746c5166a77f23 Mon Sep 17 00:00:00 2001 From: overtrue Date: Mon, 5 Oct 2026 19:00:19 +0800 Subject: [PATCH] fix(heal): increase stack size for absence receipt replay test The test used with default stack size, but the 16-disk deep heal path overflows the default macOS thread stack (~8MB). Switch to an explicit with 32MB stack and manual tokio runtime, matching the pattern used by sibling tests in the same file. Verified: test passes in isolation after the change. --- .../tests/heal_b920_subquorum_union_test.rs | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/crates/heal/tests/heal_b920_subquorum_union_test.rs b/crates/heal/tests/heal_b920_subquorum_union_test.rs index 76bafa06e..b42e48cda 100644 --- a/crates/heal/tests/heal_b920_subquorum_union_test.rs +++ b/crates/heal/tests/heal_b920_subquorum_union_test.rs @@ -672,9 +672,28 @@ mod absence_receipt_regressions { assert_eq!(read_version(store, bucket, OBJECT, current).await, CURRENT); } - #[tokio::test(flavor = "multi_thread", worker_threads = 4)] #[serial] - async fn historical_absence_receipt_repairs_and_replays() { + #[test] + fn historical_absence_receipt_repairs_and_replays() { + std::thread::Builder::new() + .name("absence-receipt-replay".to_string()) + .stack_size(32 * 1024 * 1024) + .spawn(|| { + let runtime = tokio::runtime::Builder::new_multi_thread() + .worker_threads(4) + .thread_stack_size(32 * 1024 * 1024) + .enable_all() + .build() + .expect("absence receipt replay test runtime should build"); + + runtime.block_on(historical_absence_receipt_repairs_and_replays_inner()); + }) + .expect("absence receipt replay test thread should spawn") + .join() + .expect("absence receipt replay test thread should finish"); + } + + async fn historical_absence_receipt_repairs_and_replays_inner() { let bucket = "absence-receipt-replay"; let (_paths, store, storage, old, current) = stale_history(bucket).await; let opts = HealOpts {