A chain should hold several endpoints, so one going down cannot hold the observer hostage #7
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
A
[[chains]]entry holds exactly onerpc_urland onews_url. When thatendpoint goes down, everything the observer does for that chain stops: no
headers, no difficulty, no backfill, no state reads, no runtime discovery. The
chain reports
unreachableand keeps serving its last standings, which isgraceful — but it is one host's outage deciding what a whole chain looks like.
The endpoints already exist in pairs.
a1-planck.quantus.catanda2-planck.quantus.catboth answer today, and only the first is configured. Thesame
a1/a2pattern holds for Heisenberg. We are choosing single points offailure that the network went to some trouble to avoid.
Shape
Keep
rpc_url/ws_urlworking as a one-element list so existing configs donot break.
Things worth getting right
needs a node that has that block's state; spreading consecutive reads across
nodes with different pruning would give a mix of answers and absences that
looks like sparse data. Prefer one endpoint until it fails, then move.
state_getStoragereturning null foran old block is a legitimate answer from a node that has pruned it, and must
not mark the endpoint unhealthy. Only transport failures and malformed
responses should.
subscribe_new_headsis a long-livedconnection with reconnect logic already; picking a different endpoint on
reconnect is the natural place for failover, rather than racing two
subscriptions and deduplicating heads.
and "one of three endpoints is unreachable" are different operational facts
and currently look identical.
independent and it is the bulk of the traffic. Worth doing after the failover
case works, not instead of it.
Not in scope
Load balancing for its own sake. The point is that no single host can stop the
observer, not that requests are evenly spread.