eth/downloader: don't log stale access list reservations as errors (#35493)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run

Since #35386 blocks are delivered without waiting for their access list,
a reserved BAL task can outlive its block and hit the stale branch of
`reserveHeaders`, which logs at error level — demote that case to debug.

---------

Co-authored-by: rjl493456442 <garyrong0905@gmail.com>
This commit is contained in:
0xSHKWON 2026-08-10 14:11:14 +09:00 committed by GitHub
parent 3735c34ffe
commit b3e26093ec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -594,7 +594,18 @@ func (q *queue) reserveHeaders(p *peerConnection, count int, taskPool map[common
taskQueue.PopItem()
progress = true
delete(taskPool, header.Hash())
log.Error("Fetch reservation already delivered", "number", header.Number.Uint64())
// Access lists are a best-effort component that block delivery
// never waits on, so a retrieval task outliving the delivery of
// its block is expected rather than a sign of queue corruption.
// It happens whenever a request in flight across the delivery is
// handed back afterwards, be it by the peer not possessing the
// list, by a timeout or by a disconnect.
if kind == balType {
log.Debug("Access list reservation already delivered", "number", header.Number.Uint64())
} else {
log.Error("Fetch reservation already delivered", "number", header.Number.Uint64())
}
continue
}
if throttle {