Rebuild: a chunk reported corrupt gets a second plain try before the range fails
Range 161820 failed with "doesn't inflate, also fetched plain" though the chunk was likely the compressed copy again: in flight, or spooled before the prefetcher's targets were refreshed, when the plain flag was set. The range now fails only on the third report. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
fd06b16bd9
commit
fa52d9256b
1 file changed
+3
-1
@@ -68,7 +68,9 @@ class Leases {
|
||||
const span = Spool.chunksOf({ start: Number(range.start_id), end: Number(range.end_id) }).find((s) => s.from === from)
|
||||
if (span) await Spool.removeChunk(rangeId, span)
|
||||
const plain: number[] = (range.plain_chunks ?? []).map(Number)
|
||||
if (plain.includes(from)) {
|
||||
// Reported once already: the compressed copy may have been in flight (or the prefetcher's targets not
|
||||
// refreshed yet) and spooled again (range 161820, LOG.md 2026-10-11), so a second try plain first.
|
||||
if (plain.filter((p) => p === from).length >= 2) {
|
||||
// Fetched plain (deflated here) and still not inflating: not the server's compression; set aside.
|
||||
await db.from('ranges').where('id', rangeId).update({ status: 'failed', node_id: null, error: `chunk ${from} doesn't inflate, also fetched plain` })
|
||||
return
|
||||
|
||||
Reference in new issue
Block a user