amitvijapur opened a new pull request, #2460:
URL: https://github.com/apache/datafusion-ballista/pull/2460

   # Which issue does this PR close?
   
   Closes #2147.
   
   # Rationale for this change
   
   The `Upload cluster logs on failure` step in the three container benchmark 
jobs (`tpch.yml`, `tpcds.yml`, `h2o.yml`) lists the two log files as a 
multi-line `path`. 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 in `StepHost.cs` before `docker exec`; node action inputs 
arrive there as `INPUT_*`). 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 is /. This will be the root directory of the 
artifact
   No files were found with the provided path: /__w/_temp/scheduler.log
   /home/runner/work/_temp/executor.log. No artifacts will be uploaded.
   ```
   
   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 `path` becomes 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}.log` was not an option: `@actions/glob` constructs 
minimatch with `nobrace: true`.
   
   Within this repo's own workflow and `ci/` code, the only writer of `.log` 
files into `runner.temp` is `ci/scripts/ballista_cluster.sh` (`scheduler.log`, 
`executor.log`, via `CLUSTER_DIR`).
   
   # Are these changes tested?
   
   Yes, with a throwaway workflow on my fork that runs in the same `amd64/rust` 
container, writes both files to `$CLUSTER_DIR`, and uploads them twice: once 
with the current two-line `path`, once with the glob. In 
https://github.com/amitvijapur/datafusion-ballista/actions/runs/35105812662 the 
two-line step logs `there will be 1 file uploaded` and its artifact holds only 
`__w/_temp/scheduler.log`; the glob step logs `there will be 2 files uploaded` 
and its artifact holds `scheduler.log` and `executor.log` at the root. The 
step's own output also shows the env translation at work: the step header 
prints `CLUSTER_DIR: /home/runner/work/_temp` while the shell inside the 
container sees `CLUSTER_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.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to