celestiaorg / celestiaorg/go-header

header/sync: revisit recencyThreshold default based on measured ingestion lag

Open
#390 0 comments 0 reactions 1 assignee Claimed by @vgonkivs View on GitHub
Dominant language
Go
Stars
21
Forks
33
Avg merge
5d 20h
Merged PRs (30d)
7

Description

Once header store lag data is available from production deployments, revisit the `recencyThreshold` parameter used by `header/sync` and choose a new value (or configuration policy) based on measurements rather than on the current `blockTime * 2` heuristic.
The current default `recencyThreshold` (`blockTime * 2`) has been observed to trigger the `non recent subjective head` / `non recent head from trusted peers` warning path on healthy bridge nodes during normal operation. The warning leads to redundant `Head` requests against trusted peers and adds operational noise that is difficult to act on. The root cause is a structural mismatch: `Header.Time()` is a BFT median timestamp that is already ~`blockTime` behind the actual moment the block
appears on chain, leaving the ingestion pipeline a budget of only ~`blockTime` before the threshold is tripped. This budget is frequently exceeded under realistic conditions (large blocks, load, cross-region network paths) even when the node is functioning correctly. Rather than guessing a new value, we want to base the decision on actual distribution of ingestion latency observed across deployments.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.