plakar-s3-data: seed done except seafile-fs (EINTR livelock, excluded)

Seafile's block store wedged the fs walker for 12h in an lstat
preemption/EINTR livelock on the live pool; coverage moves to the
incus leg reading the sdb replica. Restore test + cron are the
remaining steps of the data leg.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Julien Lutran
2026-08-24 00:07:01 +02:00
co-authored by Claude Fable 5
parent 4b73d77803
commit ae82d9f682
3 changed files with 313 additions and 0 deletions
+11
View File
@@ -112,6 +112,17 @@ Beyond databases, `outline`/`login` may hold non-DB state (uploaded
files, docker volumes) — decide per instance whether an fs source is
needed in §4.
⚠️ **seafile-fs excluded from the data leg (2026-08-24).** The S3
seed wedged for 12 h inside a single `lstat()` in seafile's block
store (millions of tiny files on the contended live pool). SIGQUIT
goroutine dump: main goroutine looping in `os.ignoringEINTR` around
`fstatat` — a Go preemption/EINTR **livelock** (100 % CPU, no
progress; dmesg clean, so not a kernel hang). `seafile-fs` is
commented out of `plakar-sources`; seafile's S3 coverage comes from
the incus leg instead, which reads the quiesced replica on the idle
`backup` pool. If a live-pool retry is ever wanted:
`GODEBUG=asyncpreemptoff=1` is the standard mitigation.
Findings from the first dry-run (2026-08-22):
- `livetrail`'s `/root/.my.cnf` had a stale `database = spot` default