One flaky HEAD retired an upload whose bytes were sitting at the key

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 Author
Bassam Ismail
Files count
0
Patches count
1