fix: validate dependencies after download to prevent cache inconsistency #300
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.
Summary
Fixes cache inconsistency when a package is downloaded but one of its dependencies fails to download (e.g., network error, SLSA verification failure).
Part of https://linear.app/ona-team/issue/CLC-2133/rollout-on-main
Problem
When package A downloads successfully but its dependency B fails:
A.build()finds A in cache → returns earlyA.buildDependencies()is never calledPkgNotBuiltErr{B}and cannot recoverSolution
After the download phase, validate that all cached packages have their required dependencies available. If a dependency is missing and won't be built, remove the package from cache and mark it for rebuild.
Implementation
New function
validateDependenciesAvailable:Dependency is considered available if:
PackageNotBuiltYet), ORPackageInRemoteCache)Testing
Unit tests cover:
Performance Impact
Negligible. The validation:
GetTransitiveDependencies()(already computed during download planning)Location()Affects Both SLSA and Non-SLSA Builds
The bug can occur in both modes due to network errors during download.
Co-authored-by: Ona no-reply@ona.com