This is an automated email from the ASF dual-hosted git repository.

hubcio pushed a commit to branch update-all-deps-workspace
in repository https://gitbox.apache.org/repos/asf/iggy.git

commit 71c02d7a3dc4b3a0f70e624d9515888405184d8f
Author: Hubert Gruszecki <[email protected]>
AuthorDate: Wed Sep 2 11:02:25 2026 +0200

    test(partitions): box rebuilt partitions to avoid a stack overflow
    
    compio-runtime 0.12.6 runs block_on inside catch_unwind and moves
    the future through several extra frames. Unoptimized builds keep a
    copy in each, so a #[compio::test] now needs roughly fifteen times
    its future size in stack instead of five.
    
    The dead-incarnation rebuild test held five 32 KiB IggyPartition
    values across awaits: a 160 KiB future that needed 2.7 MiB against
    the 2 MiB test thread default and aborted every CI retry with "has
    overflowed its stack". Boxing the four rebuilt partitions brings it
    back under 900 KiB, in line with the other purge tests. Release
    builds elide the copies, so iggy-server is unaffected.
---
 core/partitions/src/iggy_partition.rs | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/core/partitions/src/iggy_partition.rs 
b/core/partitions/src/iggy_partition.rs
index b08a4e2db..1af433af2 100644
--- a/core/partitions/src/iggy_partition.rs
+++ b/core/partitions/src/iggy_partition.rs
@@ -8553,8 +8553,12 @@ mod purge_floor_tests {
             .expect("purge partition");
         assert_eq!(partition.applied_purge_generation(), 4);
 
+        // Boxed: all four rebuilt partitions live across awaits. Five inline
+        // partitions make this future large enough that unoptimized builds,
+        // which keep a copy of it in every compio `block_on` wrapper frame,
+        // overflow the 2 MiB test thread stack.
         let rebuild = |created_revision: u64| {
-            let mut rebuilt = test_partition();
+            let mut rebuilt = Box::new(test_partition());
             rebuilt.set_partition_dir(dir.to_string_lossy().into_owned());
             rebuilt.set_created_revision(created_revision);
             rebuilt

Reply via email to