• v12.71 49979c4da4

    app: don't let a renamed-away source path abort the whole blackbox/support-bundle copy

    mchus released this 2026-07-28 16:28:11 +03:00 | 68 commits to main since this release

    copyPath/copyPathFiltered treated any os.Stat/os.ReadDir/os.Open error on a
    source entry as fatal, aborting the entire tree copy. A source path is read
    from the live export dir while bee's own task runner concurrently renames
    task directories (e.g. "_pending" -> "_done") — an entry present in the
    parent's os.ReadDir a moment ago disappearing by the time it's individually
    Stat'd/Open'd is an expected race, not a real failure.

    Seen on a real crash bundle: blackbox got stuck in status "degraded" from
    early in the run (first hit during the CPU pack, well before the GPU tests)
    after exactly this race, and every syncBracket wait then timed out for the
    rest of the run — the discovery/wait plumbing from the previous fix works,
    but had nothing working under it to wait on. The target also accumulated
    stale "_pending" copies alongside "_done" ones with no cleanup, though
    fixing that dedup is left for a follow-up.

    os.IsNotExist(err) now skips the vanished entry instead of propagating.
    Added regression tests simulating the race directly (copy_path_race_test.go).

    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com

    Downloads