Retry the exact failed compile job #1053
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!1053
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/retry-exact-compile-job"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
When two compile jobs share a source but have different flags and outputs, the retry pass currently finds the first job with that source. If A succeeds and B fails, it retries cached A and can announce recovery/proceed to linking while B's object is still missing; the linker may then fail. Two failures can likewise retry A twice.
Keep each completed future paired with its original job, retain that complete job on failure, and retry it once serially.
compile_one's return API, memory/worker/cache policies, progress records and linking stay unchanged.Refs #1029 as related investigation context; this is separate from the memory-reservation lease fix.
Validation:
compile_oneand compile/retry coordinator using a realThreadPoolExecutorand fake compiler children. They cover different outputs/flags for one source, B's successful retry, persistent B failure returning1 before linking, both jobs failing, successful jobs without retries, and existing counted progress.git diff --checkpasses.No native compiler, game, memory stress or full build/link. The fixture disables the memory gate and spies on cache publication/ETA helpers to isolate job selection. Existing stamp-file
ResourceWarningdiagnostics remain visible and are not suppressed.All hosted checks on
502544b0pass: Linux source regressions, Windows source regressions, Windows Vulkan renderer, Builder packaging, AppImage packaging, SPIR-V checks and workflow lint. Release publication was intentionally skipped.Release integration: the official v2.0.8-rc.2 and rc.3 history contains this fix through merge commit 2c5c9e6. GitHub's PR metadata remains open while the default main branch is at a different revision; this note records released-source incorporation separately from a formal PR merge.