fix: consolidate blob source test into single summary log with supernode detection#21719
Draft
AztecBot wants to merge 8 commits intomerge-train/spartanfrom
Draft
fix: consolidate blob source test into single summary log with supernode detection#21719AztecBot wants to merge 8 commits intomerge-train/spartanfrom
AztecBot wants to merge 8 commits intomerge-train/spartanfrom
Conversation
…igured The testSources() method was logging WARN for unconfigured archive client and consensus host URLs, even when an operator has other valid sources (e.g. a supernode beacon client). Demote to info since these are optional sources. The warn for no reachable sources at all is preserved.
Reworks testSources() to probe each consensus client for blob sidecar support (supernode/semi-supernode detection) and emit a single summary: "Blob client running with consensusSuperNodes=N archiveSources=N blobSinks=N" with optional suffix for ignored non-supernode clients. Only warns if there are no available consensus supernodes. Errors if no sources are reachable at all (unless blobAllowEmptySources is set).
Keep individual info/error logs for each source during validation, then emit the consolidated summary line at the end.
Reverts unnecessary renames (headersUrl→url, headersOpts→options, headersRes→res). Fixes supernode detection to query a slot beyond the standard 4096-epoch pruning window instead of head slot, which any post-Deneb beacon node would serve.
Querying a slot beyond the pruning window tests for a full archive node, which is more than what's needed. A supernode/semi-supernode just needs to serve blob sidecars for recent blocks. Checking the head slot correctly identifies whether the node supports the blob sidecar API — a 200 response (even with empty data) means it does.
Contributor
|
Functionally looks good! Added backport to v4-next label |
There's no reliable way to distinguish supernodes from regular beacon nodes via API probing. Post-Deneb, all nodes serve blob sidecars for recent slots within the DA window. Simplified to just count reachable consensus hosts and report the summary.
Post-Fusaka (PeerDAS), non-supernode beacon nodes no longer serve the
blob sidecar endpoint. A 200 response from /eth/v1/beacon/blobs/{slot}
(even with empty data for a slot with no blobs) means the node supports
blob sidecars. Reachability is checked first via headers, then blob
sidecar support is tested separately.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix A-700
Summary
testSources()to detect supernodes by probing the blob sidecar endpointBlob client running with consensusSuperNodes=N archiveSources=N blobSinks=N. M consensus client(s) ignored because they are not running in supernode or semi-supernode modeblobAllowEmptySources)How supernode detection works
Post-Fusaka (PeerDAS), non-supernode beacon nodes no longer serve the blob sidecar endpoint. Each consensus host is tested by:
/eth/v1/beacon/headers/headto verify reachability and get the head slot/eth/v1/beacon/blobs/{headSlot}to check blob sidecar supportLog level logic
info— at least one consensus supernode availablewarn— no consensus supernodes (but other sources like archive/filestore may exist)throw— no sources at all (unlessblobAllowEmptySources)