Repository navigation
Conversation
In a container job the runner rewrites only the leading host path of a multi-line `path:` input (actions/runner#1174), so `executor.log` was never uploaded. A single glob is rewritten as one path. Closes apache#2147
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.
Which issue does this PR close?
Closes #2147.
Rationale for this change
The
Upload cluster logs on failurestep in the three container benchmark jobs (tpch.yml,tpcds.yml,h2o.yml) lists the two log files as a multi-linepath. In a container job the runner translates host paths to container paths for action inputs with a single prefix replacement on the whole input string (ContainerInfo.TranslateToContainerPath, applied to every environment value inStepHost.csbeforedocker exec; node action inputs arrive there asINPUT_*). A two-line input starts with the host path once, so only its first line is rewritten. actions/runner#1174 is this defect, open since 2021.upload-artifact then gets one path that exists inside the container and one that does not. From a failed PR leg on the current form of the step (run 35050467408):
The least common ancestor of
/__w/...and/home/runner/...is/, which is the line quoted in the issue, and it is why the one file that did upload in run 29749959848 sat under__w/_temp/inside the artifact.What changes are included in this PR?
The two-line
pathbecomes one glob,${{ runner.temp }}/*.log, in all three workflows, with a two-line comment saying why it is a glob so it does not get tidied back into two lines. A single line is rewritten whole, and with one search path the artifact root is/__w/_temp, so both files land at the top level of the artifact.{scheduler,executor}.logwas not an option:@actions/globconstructs minimatch withnobrace: true.Within this repo's own workflow and
ci/code, the only writer of.logfiles intorunner.tempisci/scripts/ballista_cluster.sh(scheduler.log,executor.log, viaCLUSTER_DIR).Are these changes tested?
Yes, with a throwaway workflow on my fork that runs in the same
amd64/rustcontainer, writes both files to$CLUSTER_DIR, and uploads them twice: once with the current two-linepath, once with the glob. In https://github.com/amitvijapur/datafusion-ballista/actions/runs/35105812662 the two-line step logsthere will be 1 file uploadedand its artifact holds only__w/_temp/scheduler.log; the glob step logsthere will be 2 files uploadedand its artifact holdsscheduler.logandexecutor.logat the root. The step's own output also shows the env translation at work: the step header printsCLUSTER_DIR: /home/runner/work/_tempwhile the shell inside the container seesCLUSTER_DIR=/__w/_temp.Are there any user-facing changes?
No. CI only. Failure artifacts from these three jobs now contain
executor.log, and the files sit at the artifact root instead of under__w/_temp/.Written with AI assistance (Claude Code). The mechanism was checked against the runner and toolkit sources and the run logs quoted above, and the repro was run on my fork.