Contribution Date
Contribution Project
Contribution Details
One flaky HEAD retired an upload whose bytes were sitting at the key
The resume path reads the object a previous attempt promoted, and it treated every
`head` failure as "the object is gone" — permanent, no retry, upload lost. A load
run produced the case it was wrong about: one `IncompleteMessage` from SeaweedFS
against an object that was exactly where the first attempt had put it, and the job
went dead after five attempts over a network blip.
Only `NotFound` is the store agreeing the bytes are absent. A reset connection, a
timeout, a 500 mean the store is unreachable, which is the distinction
`Error::is_transient` already documents in the other direction: "one flaky read
permanently kills an asset's derivatives".
The new case is the sibling of the existing resume test — that one has the object
genuinely missing and asserts permanent, this one has the backend unreachable and
asserts retryable, then retries against the real store and recovers the asset. It
fails without the fix with the same error shape the dead job carried.
Contribution Issue Link
Files count
0
Patches count
1