Skip to content

test(ibd): serialise h-slow GetData latch reset with rotate-once tests - #26

Merged
secsovereign merged 1 commit into
mainfrom
fix/ibd-h-sticky-serial
Oct 15, 2026
Merged

secsovereign merged 1 commit into
mainfrom
fix/ibd-h-sticky-serial

Conversation

@secsovereign

Copy link
Copy Markdown
Member

Problem

Main went red after #24 on a storage-only delta. The only failure was

node::parallel_ibd::chunk_assigner::tests::r219_h_slow_dump_keeps_preferred_fat_rotates_once

(same GetData sample must not rotate again).

Root cause

maybe_rotate_slow_h_sticky dedupes on process-wide LAST_H_SLOW_GD_MS plus tip_stage's last GetData body globals. The rotate-once tests already use #[serial_test::serial(ibd)], but r219_h_slow_skips_dump_rotates_fat_once called test_reset_h_slow_gd() without that attribute. serial_test only serialises marked tests with each other, so the bare reset could clear the latch mid-flight of the rotate-once test and make the second maybe_rotate_slow_h_sticky treat the same sample as new.

Fix

Add #[serial_test::serial(ibd)] to r219_h_slow_skips_dump_rotates_fat_once. No production / consensus changes.

Local check

cargo test -j 2 -p blvm-node --lib --features production r219_h_slow -- --test-threads=8

  • 50× the r219_h_slow filter: 50/50 pass
  • 30× broader h_slow|dump_warehouse: 30/30 pass

r219_h_slow_skips_dump_rotates_fat_once cleared process-wide LAST_H_SLOW_GD_MS without serial(ibd), so it could wipe the latch while r219_h_slow_dump_keeps_preferred_fat_rotates_once expected the same GetData sample not to rotate again.
@secsovereign
secsovereign merged commit 725f694 into main Oct 15, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant