Repository navigation
Fix hangs in CI builds - #940
Merged
nnastonen merged 4 commits intoOct 27, 2026
Merged
Conversation
nnastonen
force-pushed
the
fix_raft_fetch_after_leave_group
branch
from
October 20, 2026 14:11
763e499 to
d19e2ec
Compare
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## dev/v8.x #940 +/- ##
===========================================
Coverage ? 49.18%
===========================================
Files ? 112
Lines ? 12790
Branches ? 6061
===========================================
Hits ? 6291
Misses ? 2468
Partials ? 4031 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
nnastonen
force-pushed
the
fix_raft_fetch_after_leave_group
branch
2 times, most recently
from
October 21, 2026 16:13
4840e87 to
06faba3
Compare
nnastonen
marked this pull request as ready for review
October 21, 2026 17:25
nnastonen
requested review from
JacksonYao287,
raakella1,
shosseinimotlagh and
szmyd
October 21, 2026 17:30
raakella1
reviewed
Oct 23, 2026
- RaftReplDev: don't fetch data for a repl dev that is no longer active, and drain in-flight fetches before leave_group() frees the raft server. A late fetch dereferenced the freed server and crashed the follower; the other replicas then waited forever. - BlkReadTracker: guard the waiter list; wait_on() appended to it under the bucket's shared lock only. - home_log_store::truncate(): serialize concurrent truncates of a store. - JournalVirtualDev: lock the descriptor map in open(), destroy() and load. - CPWatchdog: it never checked anything, and its progress and deadline checks were inverted. A CP that makes no progress for 12 timer periods, with no consumer left to repair, now asserts with its state.
- Raft repl test harness: bound every wait on other replicas (--wait_timeout_sec, default 600s) and report what it waited for; make the IPC barrier generation based, so consecutive barriers of the same phase no longer let replicas through early; count spare replicas in the register_listener() barrier. - SoloReplDev: CPs truncate part of the journal before the restart in slow runs, so expect replays only for the writes after the truncation point, and check that count exactly. - LogStore: keep flushing while waiting for inserts; a flush can be skipped while a truncate holds the flush lock. - IndexCrashRecovery: don't trigger a CP into an already started simulated crash.
- Build with AddressSanitizer when sanitize=address (CMake only read MEMORY_SANITIZER_ON, so the ASan job was a plain Debug build), with two parallel compiles to stay within the runner's memory. - Print the output of failing tests and give every test a 30 minute timeout. - Run tests through stack_dump_launcher.sh, which prints all thread stacks of a test still running after 25 minutes and of a test that crashed (from its core file). - Upload the test logs as an artifact.
nnastonen
force-pushed
the
fix_raft_fetch_after_leave_group
branch
from
October 23, 2026 08:57
06faba3 to
1d1cc6c
Compare
nnastonen
force-pushed
the
fix_raft_fetch_after_leave_group
branch
from
October 23, 2026 12:55
7012598 to
0b25238
Compare
nnastonen
force-pushed
the
fix_raft_fetch_after_leave_group
branch
from
October 27, 2026 13:16
0b25238 to
b50d30e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Since _PRERELEASE has been enabled, it exposed problems with replicas and synchronisation between them. This is an attempt to fix them.
Why
The Debug CI jobs (ASan, TSan, Coverage) intermittently hung until GitHub killed them after 6 hours, or crashed, with nothing in the log to diagnose. Release builds passed. The causes were real races in HomeStore plus bugs in tests and the test harness. Some were hidden because the "ASan" job wasn't actually built with ASan.
Changes
Product fixes
Tests
CI
SDSTOR-26170