Skip to content

EOS tests: follow-up to #5 (appends during reads, find limits as nobody, TSan) - #6

Open
oschulz wants to merge 4 commits into
mainfrom
eos-tests-followup
Open

oschulz wants to merge 4 commits into
mainfrom
eos-tests-followup

Conversation

@oschulz

@oschulz oschulz commented Oct 30, 2026

Copy link
Copy Markdown
Contributor

Claude Opus 5.5 (Claude Code, effort xhigh), for Oliver.

Follow-up to #5: the problems that remained after its review and after runs on a multi-node EOS instance.

  • An append during a read (docs/design.md, tests/integration/test_eos.cc). Where a file's replicas are on several storage nodes, the replica read may not show an append made during the read. This is the append failure from Eos tests non root #5, reproduced on a multi-node instance. The copy is then the listed version, and the next run copies the file again. The test allows that outcome only for a file whose replicas fileinfo puts on more than one host.
  • Find limits as nobody. A caller that is nobody owns the directory that the test makes unreadable for nobody, so the test now skips for such a caller instead of failing. The comment and the docs now say which callers become nobody.
  • TSan. A suppression for the report between XrdCl's own threads that fails the ubuntu-24.04 thread job now and then, most recently on 1779a9d before a rerun.

Tested

  • Unit tests on ubuntu22 (none, thread); integration tests on ubuntu22 (none, thread) against the container instance.
  • The find-limits test as root, as the sudoer and as nobody.
  • The append test, 3 times on a multi-node instance: all passed in the new branch, including the retried copy and the part without checksums.
  • Mutation: with the reader's post-read check disabled, the append test fails on the single-node container instance.
  • The intermediate commit 4c44aaa: unit tests.
  • Not tested locally: the suppression itself. The race never showed outside GitHub's ubuntu-24.04 runner, so only CI can confirm it.

Not in this PR. Deleting dev and taking it out of the CI triggers waits for your go-ahead. The on-demand job (long and EOS integration tests) can run now that main has the workflow. I'm starting it on this branch and will comment with the result.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TRxwa5YUZtSYaNrtTTkhun

GitHub's ubuntu-24.04 thread job fails now and then on a report that
XrdCl's poller thread frees a response buffer that a job thread copied
before in XRootDMsgHandler::ParseResponse. Both stacks are inside the
uninstrumented library, without eosmirror's code in them.

Assisted-By: generative AI
Such a caller owns the directory that the test makes unreadable for
nobody, so the test failed where it should skip. The comment and the
docs said imprecisely which callers become nobody when they ask for it:
every caller but a sudoer does, and a sudoer stays one.

Assisted-By: generative AI
On an instance with a file's replicas on several storage nodes, the
replica read may not show an append made during the read (3 of 3 runs on
such an instance). The copy is then the listed version, and the next run
copies the file again. docs/design.md records this. The test accepts
that outcome only for a file whose replicas fileinfo puts on more than
one host, so that the single-node test instance still catches a
post-read check that misses changes.

Assisted-By: generative AI
The comment on the sanitizer settings names what tsan.supp suppresses,
and missed the report in XrdCl's response parsing added before.

Assisted-By: generative AI
@oschulz

oschulz commented Oct 30, 2026

Copy link
Copy Markdown
Contributor Author

Claude Opus 5.5 (Claude Code, effort xhigh).

The on-demand job ran for the first time, on this branch at 01e53db: run 41097365473. Both of its jobs passed. They covered the long tests (differential, crash consistency) and the integration tests against the container EOS instance and the xrootd server, without a sanitizer and under ASan/UBSan, including the sudoer's test. The PR's own CI passed on 01e53db as well.

416f100 only fixes a comment in tests/CMakeLists.txt, which lists what tsan.supp suppresses and lacked the new entry.

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.

1 participant