Skip to content

Test the newest git-annex build (OsPath); BeeGFS export/EBUSY issue fixed by it - #15

Merged
yarikoptic merged 3 commits into
masterfrom
claude/kind-curie-a9wb4m
Sep 28, 2026
Merged

yarikoptic merged 3 commits into
masterfrom
claude/kind-curie-a9wb4m

Conversation

@yarikoptic-gitmate

@yarikoptic-gitmate yarikoptic-gitmate commented Sep 28, 2026 •

Copy link
Copy Markdown

Problem

bin/ci/install-git-annex-daily.sh asked con/git-annex for build-ubuntu.yaml runs with ?status=success. That is the whole run's conclusion. The test-annex (nfs-home) job there has been red on every run since 2026-09-23 (con/git-annex#293), so no run qualified as successful. As a result:

  • the git-annex cells kept installing old builds that lack OsPath;
  • the 2026-09-28 scheduled run (36417303910) installed 10.20260901+git47 from 35576118792, and BeeGFS 7.4.6 got git42 from 34820527339;
  • the build flags were … S3 WebDAV Servant, with no OsPath.

Changes

1. Install the newest build, and check its flags

  • bin/ci/pick-git-annex-build.sh (new) picks the newest master schedule/workflow_dispatch run that still has an unexpired git-annex-debianstandalone-packages_* artifact.
    • That artifact is uploaded only once build-package succeeds, so its presence is the real signal. The run's own conclusion is only logged.
    • pull_request builds are skipped, since they carry unmerged patches.
    • Every run it considers is logged with its artifact count.
  • test.yaml: the matrix job runs the picker once, with actions: read, and passes the run id to every cell, so all cells of a workflow run test the same build.
    • The step is continue-on-error; if it fails, each cell picks for itself.
  • bin/ci/install-git-annex-daily.sh:
    • takes that run id, as a positional argument or GIT_ANNEX_RUN_ID;
    • writes the build URL, the package name and the git annex version header to the job summary;
    • fails if a flag in EXPECT_BUILD_FLAGS is missing. The default is OsPath; "" disables the check.

2. Known issues, now that an OsPath build runs

  • evals/known-issues.yaml: beegfs-annex-export-busy is removed, not left in place as known. A recurrence should turn the cell red, and non-OsPath builds are now refused anyway.
  • GOTCHAS.md:
    • the "BeeGFS / git-annex test" section records the resolution and the evidence below;
    • the generated block was regenerated with bin/ci/known_issues.py gotchas.

Results (run 36475373813 on 5291abf)

The picker chose con/git-annex run 36399800528 (schedule, 2026-09-28…, run failure): 1 package artifact(s). Every git-annex cell installed 10.20260901+git71, whose build flags are … Servant OsPath.

Cell Old build, no OsPath (run 36417303910) OsPath build (run 36475373813)
BeeGFS 7.4.6 / git-annex ❌ 8 failures (export and import ×3, … of subdir ×3, git-remote-annex exporttree ×2), 24× Device or resource busy ✅ pass 838 · fail 0, all 26 test groups pass
BeeGFS 8.1.0 / git-annex ❌ 3 failures, then hung at conflict resolution (removed file) until the timeout (exit 124) ✅ pass 838 · fail 0, 6m6s
NFS / git-annex ✅ ✅
Loop vfat / ext4 / git-annex 432/700, known (loop-annex-diskreserve) unchanged, known
  • On both BeeGFS cells, known_issues.py reported 'beegfs-annex-export-busy' did not reproduce -- fixed?.
  • The upstream changes between git47 and git71 touch nothing in the export or rename paths, so the OsPath build flag is the difference. The upstream BeeGFS bug report also says these failures go away with OsPath.
  • One thing to watch: on 7.4.6 several tests stalled together for about 9.5 minutes and then passed. The suite took 22m instead of about 6m.

Fix found by this PR's own first run

The first push picked 35319817132 (09-18, no OsPath), even though 11 newer runs came first. The new flag check caught it: the cells went red with lacks expected build flag(s): OsPath instead of quietly testing an old build.

  • Cause: gh api inside while read … <<< "$runs" shared the loop's stdin.
  • Fix: iterate over an array and give gh </dev/null.
  • Result: the next run picked the newest build on its first candidate.

Testing

  • bin/ci/shellcheck.sh is clean on 26 scripts, and run-checks.sh known-issues and unit pass.
  • The picker was run against the live API, and the flag check was tested against five cases: flag present, flag missing, check disabled, a look-alike substring, and several expected flags.
  • CI results are in the table above.

🤖 Generated with Claude Code

https://claude.ai/code/session_013n9Q2igij49kxdtiakUzYv

install-git-annex-daily.sh took con/git-annex build-ubuntu.yaml runs
with ?status=success.  That is the whole run's conclusion, and the
nfs-home test job there has been red on every run since 2026-09-23
(con/git-annex#293), so every git-annex cell kept installing
10.20260901+git47 from run 35576118792 (2026-09-21), and BeeGFS 7.4.6
on 2026-09-28 even got git42 from 34820527339.  In particular no cell
has yet tested the first build with OsPath (con/git-annex#295), which
is what matters for the BeeGFS rename/EBUSY failures.

- bin/ci/pick-git-annex-build.sh (new): newest master schedule /
  workflow_dispatch run that has an unexpired
  git-annex-debianstandalone-packages_* artifact -- uploaded only once
  build-package succeeded, so that is the real signal.  Run once in the
  `matrix` job, so all cells of a workflow run test the same build.
  Today it picks 36399800528 (2026-09-28); the old query still says
  35576118792.
- install-git-annex-daily.sh: takes that run id (positional or
  GIT_ANNEX_RUN_ID; picks itself when empty), writes the build URL,
  package and `git annex version` head to the job summary, and fails if
  a flag in EXPECT_BUILD_FLAGS (default "OsPath") is missing, so a cell
  cannot silently measure a different build.
- test.yaml: matrix job gets actions: read and the pick step
  (continue-on-error: cells fall back to picking themselves).

Tested: shellcheck (26 scripts), known-issues and unit checks; picker
run against the live API through a `gh api --jq` stand-in; flag check
against present / missing / disabled / substring (OsPathX) cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013n9Q2igij49kxdtiakUzYv
In this PR's first run the matrix job picked 35319817132 (2026-09-18,
no OsPath) although 11 newer master runs, each with its package
artifact, precede it -- the same query picks 36399800528 locally.
install-git-annex-daily.sh's new flag check caught it (the cells went
red with "lacks expected build flag(s): OsPath" instead of silently
testing an old build), but the picker must not skip them.

The cause is not reproducible here, so: log run id, event, date,
conclusion and the artifact count for every candidate considered, and
iterate over an array with gh reading /dev/null instead of a
`while read ... <<< "$runs"` loop whose stdin gh would share.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013n9Q2igij49kxdtiakUzYv
With this PR's picker the git-annex cells finally ran the first OsPath
build (con/git-annex run 36399800528, 10.20260901+git71), and on both
BeeGFS versions every test group passes: pass 838 fail 0, no
renamePath/EBUSY, no hang -- known_issues.py flagged the entry
"did not reproduce -- fixed?" on both cells.  The 2026-09-28 matrix on
the non-OsPath git42/git47 builds (run 36417303910) failed exactly the
entry's tests (7.4.6: 8 failures, 24 EBUSY; 8.1.0: 3 failures and the
`conflict resolution (removed file)` hang to exit 124).  Upstream
git47..git71 changes nothing in the export or rename paths, so the
build flag is the difference, as the upstream BeeGFS bug report said.

Dropping the entry (rather than keeping it as known) makes a recurrence
a red cell; install-git-annex-daily.sh already refuses non-OsPath
builds.  GOTCHAS.md's "BeeGFS / git-annex test" section now records the
resolution, the evidence, and the one-off ~9.5 min stall seen on 7.4.6;
the generated known-issues block was regenerated with
`bin/ci/known_issues.py gotchas`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013n9Q2igij49kxdtiakUzYv
@yarikoptic-gitmate yarikoptic-gitmate changed the title Test the newest git-annex build (with OsPath), not the newest all-green run Test the newest git-annex build (OsPath); BeeGFS export/EBUSY issue fixed by it Sep 28, 2026
@yarikoptic
yarikoptic merged commit 47bc502 into master Sep 28, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants