Update after a few more days, confirming what zeus86 saw.
The `delete-objects-via-delete-object` quirk got rid of the `unexpected EOF` errors, but GC is still not reliable: as soon as there is a meaningful amount of garbage (a few thousand chunks), phase 2 fails with `failed to delete some objects`. It took 4 attempts on 25/10 and 5 attempts on 26/10 to get a green run.
The deletes do go through between failures. Watching the object count in the Hetzner console, it drops in steps of 500 objects (122,336 → 121,836, then 124,393 → 121,893), then the task aborts. Each retry finishes part of the job, and the last one completes in under a minute.
I also got a `504 Gateway Timeout` on a chunk upload during a sync on 25/10. Together with the truncated bodies, the 405 I saw on 09/10 and the failed deletes, this looks like instability on Hetzner's side (hel1 here), which PBS makes visible because it doesn't retry. I've opened a ticket with Hetzner and will report back.
On the PBS side, two things would help a lot:
- log the object key and the S3 error code for each failed delete (right now the task log only says `failed to delete some objects`);
- retry transient errors (5xx, truncated bodies) instead of aborting the whole GC.
Current workaround: rerun GC until it's green. No data loss, only garbage kept a little longer.
Setup for reference: PBS 4.2.8, Hetzner hel1, quirks `skip-if-none-match-header` + `delete-objects-via-delete-object`, `--limit-active-requests 10 --limit-passive-requests 10`, GC scheduled alone at 04:00 UTC.