Skip to content

[8.8.0] Materialize important outputs from remote external repos#29089

Closed
fmeum wants to merge 3 commits into
bazelbuild:release-8.8.0from
fmeum:rrcc-8.7.0-23
Closed

[8.8.0] Materialize important outputs from remote external repos#29089
fmeum wants to merge 3 commits into
bazelbuild:release-8.8.0from
fmeum:rrcc-8.7.0-23

Conversation

@fmeum

@fmeum fmeum commented Mar 24, 2026

Copy link
Copy Markdown
Collaborator

Important outputs and runfiles from external repos that are remote repo contents cache hits got stuck at various levels of the materialization pipeline for being source artifacts. This is fixed by consolidating the skip logic in a RemoteOutputChecker.mayBeRemote static helper and letting external-repo source artifacts flow through the toplevel-output download path, so they honor --remote_download_outputs just like build outputs.

8.x adaptation: v9 routes toplevel outputs through RemoteImportantOutputHandler, which does not exist on 8.x (ImportantOutputHandler has no production implementor there). The equivalent toplevel-output materialization on 8.x lives in CompletionFunction.ensureToplevelArtifacts/downloadArtifact, which previously bailed out on non-DerivedArtifacts and only ran under skymeld. This backport lets external-repo source artifacts — which have no generating action and are thus never downloaded by finalizeAction — flow through that path in both skymeld and non-skymeld builds. AbstractActionInputPrefetcher.prefetchFiles on 8.x already only skips main-repo source artifacts, so it is unchanged beyond annotating the action parameter @Nullable.

Closes #28308.

PiperOrigin-RevId: 881618604
Change-Id: Ifaae8e39b0bcab3803653ca82bcf00d26c487316
(cherry picked from commit 16613f1)

@iancha1992 iancha1992 added this to the 8.7.0 release blockers milestone Mar 25, 2026
@iancha1992 iancha1992 added the soft-release-blocker Soft release blockers that are nice to have, but shouldn't block the release if it's the last one. label Apr 24, 2026
@iancha1992 iancha1992 changed the title [8.7.0] 23/23: Materialize important outputs from remote external repos [8.8.0] 23/23: Materialize important outputs from remote external repos May 7, 2026
@iancha1992 iancha1992 changed the base branch from release-8.7.0 to release-8.8.0 May 7, 2026 17:31
@github-actions

github-actions Bot commented Jun 7, 2026

Copy link
Copy Markdown

Thank you for contributing to the Bazel repository! This pull request has been marked as stale since it has not had any activity in the last 30 days. It will be closed in the next 30 days unless any other activity occurs. If you think this PR is still relevant and should stay open, please post any comment here and the PR will no longer be marked as stale.

@github-actions github-actions Bot added the stale Issues or PRs that are stale (no activity for 30 days) label Jun 7, 2026
@fmeum fmeum changed the title [8.8.0] 23/23: Materialize important outputs from remote external repos [8.8.0] Materialize important outputs from remote external repos Jun 23, 2026
@github-actions github-actions Bot removed the stale Issues or PRs that are stale (no activity for 30 days) label Jun 24, 2026
@fmeum fmeum force-pushed the rrcc-8.7.0-23 branch 3 times, most recently from 8b22c28 to 468cbb3 Compare June 24, 2026 08:37
@fmeum fmeum force-pushed the rrcc-8.7.0-23 branch 2 times, most recently from 119e3c8 to ddbaca0 Compare June 24, 2026 11:59
@fmeum fmeum marked this pull request as ready for review June 24, 2026 13:31
@fmeum fmeum requested a review from a team as a code owner June 24, 2026 13:31
@github-actions github-actions Bot added team-Performance Issues for Performance teams team-Configurability platforms, toolchains, cquery, select(), config transitions team-ExternalDeps External dependency handling, remote repositiories, WORKSPACE file. team-Core Skyframe, bazel query, BEP, options parsing, bazelrc team-Remote-Exec Issues and PRs for the Execution (Remote) team area-Bzlmod Bzlmod-specific PRs, issues, and feature requests awaiting-review PR is awaiting review from an assigned reviewer labels Jun 24, 2026
@iancha1992 iancha1992 enabled auto-merge June 24, 2026 18:20
@iancha1992 iancha1992 requested review from Wyverald and tjgq June 24, 2026 18:21
Fixes bazelbuild#27517 by checking Skyframe deps in batches that stop right before any dep that may cause a cycle if checked while previous deps are out-of-date.

This is accompanied by a restructuring of `RepoRecordedInput` that consolidates all Skyframe logic associated with the computation of the corresponding value exclusively within that class. This will also be helpful in adding support for dynamic inputs to the remote repo contents cache in future work.

The upstream commit additionally moved the entirety of `RepositoryFetchFunction` to Skyframe workers so that checking the up-to-dateness of local repo contents cache entries isn't quadratic. That worker refactor is omitted in this 8.x backport, which keeps the existing split `RepositoryDelegatorFunction`/`StarlarkRepositoryFunction` architecture and restart-based evaluation; the cycle fix and the `RepoRecordedInput` restructuring are applied on that model. The batched up-to-dateness check is restart-safe (`isAnyValueOutdated` short-circuits while its batch's values are still missing).

Closes bazelbuild#28206.

Co-authored-by: Xudong Yang <wyverald@gmail.com>
PiperOrigin-RevId: 855252657
Change-Id: Ica18760ae79da5155fc0f3d8cd4f24c52a034c86
(cherry picked from commit 72a25a9)
fmeum added 2 commits June 25, 2026 09:47
* The cache was always written to, even if not enabled. (On 8.x this guard was already folded into the remote repo contents cache port, bazelbuild#29075, so only the second fix below is applied here.)
* Google RBE doesn't accept `Command`s without the (deprecated) `Platform` field set. We set it both on `Command` and `Action`, just to be safe.

Fixes bazelbuild#28294 (comment)

Closes bazelbuild#28295.

PiperOrigin-RevId: 856169835
Change-Id: I2479119a173e325a7d39643a36536569f5f831fc
(cherry picked from commit a9946096847e22de98e0e11b1f5dfbb6ec6ecdbb)
Important outputs and runfiles from external repos that are remote repo contents cache hits got stuck at various levels of the materialization pipeline for being source artifacts. This is fixed by consolidating the skip logic in a `RemoteOutputChecker.mayBeRemote` static helper and letting external-repo source artifacts flow through the toplevel-output download path.

8.x adaptation: v9 routes toplevel outputs through `RemoteImportantOutputHandler`, which does not exist on 8.x (`ImportantOutputHandler` has no production implementor). The equivalent toplevel-output materialization on 8.x lives in `CompletionFunction.ensureToplevelArtifacts`/`downloadArtifact`, which previously bailed out on non-`DerivedArtifact`s and only ran under skymeld. This change lets external-repo source artifacts (which have no generating action and are thus never downloaded by `finalizeAction`) flow through that path in both skymeld and non-skymeld builds, so they honor `--remote_download_outputs` just like build outputs do. `AbstractActionInputPrefetcher.prefetchFiles` already only skips main-repo source artifacts, so it is unchanged beyond annotating the `action` parameter `@Nullable` (source artifacts have no generating action).

Closes bazelbuild#28308.

PiperOrigin-RevId: 881618604
Change-Id: Ifaae8e39b0bcab3803653ca82bcf00d26c487316
(cherry picked from commit 16613f1)
auto-merge was automatically disabled June 25, 2026 07:47

Head branch was pushed to by a user without write access

@iancha1992 iancha1992 enabled auto-merge June 25, 2026 19:54
@fmeum

fmeum commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator Author

Merged in 023a3f6

@fmeum fmeum closed this Jun 26, 2026
auto-merge was automatically disabled June 26, 2026 11:09

Pull request was closed

@fmeum fmeum deleted the rrcc-8.7.0-23 branch June 26, 2026 11:10
@github-actions github-actions Bot removed the awaiting-review PR is awaiting review from an assigned reviewer label Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-Bzlmod Bzlmod-specific PRs, issues, and feature requests soft-release-blocker Soft release blockers that are nice to have, but shouldn't block the release if it's the last one. team-Configurability platforms, toolchains, cquery, select(), config transitions team-Core Skyframe, bazel query, BEP, options parsing, bazelrc team-ExternalDeps External dependency handling, remote repositiories, WORKSPACE file. team-Performance Issues for Performance teams team-Remote-Exec Issues and PRs for the Execution (Remote) team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants