Skip to content

release: gloas support - #69

Open
mattevans wants to merge 29 commits into
masterfrom
release/gloas
Open

release: gloas support#69
mattevans wants to merge 29 commits into
masterfrom
release/gloas

Conversation

@mattevans

Copy link
Copy Markdown
Member

No description provided.

@mattevans mattevans self-assigned this Mar 23, 2026
mattevans and others added 5 commits March 23, 2026 10:11
…lient with github.com/pk910/go-eth2-client for temporary support while awaiting upstream merge
…ability and security

chore(go.sum): synchronize checksum file with updated dependencies in go.mod
…0324190457-8f361e342cb9 to obtain the latest fixes and improvements
Replaces the pk910 replace directive with a direct dependency on
github.com/ethpandaops/go-eth2-client v0.0.1, and updates all imports
from github.com/attestantio/go-eth2-client to the ethpandaops fork.

Also adds spec.DataVersionHeze to ForkOrder (now exposed by v0.0.1).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
mattevans and others added 22 commits April 16, 2026 13:18
…-client

chore(deps): migrate to ethpandaops/go-eth2-client v0.0.1
…test versions for better stability and performance
… clarity and maintainability

refactor(metrics): replace hard-coded label strings with constants to reduce duplication and minimize errors
* master:
  chore: swap go-eth2-client to ethpandaops fork v0.1.2 (#72)
…rator-supplied beacon node config URLs for clarity and maintainability
Bumps the go-ethereum pin from bal-devnet-3 commit 8f361e342cb9 (2026-03-23)
to bal-devnet-6 HEAD 73944e329925 (2026-05-07) — the EL branch deployed on
glamsterdam-devnet-3 per ethpandaops/glamsterdam-devnets ansible inventory.

bal-devnet-6 contains the latest BAL (EIP-7928) refinements plus Amsterdam
slot-number support (EIP-7843) needed for Gloas observability.
* master:
  publish typed fast_confirmation events
  recognize fast_confirmation event topic
* master:
  chore(deps): bump the actions group across 1 directory with 4 updates
  chore: add .gitignore file to exclude unnecessary files from version control
  refactor(metrics): replace hardcoded metric label strings with constants for better maintainability chore(api): remove inline comment suppressing gosec linter warning for consistency in code formatting
  chore(workflows): update golangci-lint version from 2.10.1 to 2.12.2 for improved linting functionality chore(workflows): change go-version from fixed version to version-file for better dependency management chore(go.mod): update Go version from 1.25.1 to 1.26.1 to align with current standards chore(go.sum): update dependency hashes after changing Go version and golangci-lint version
* master:
  style(tests): remove unnecessary empty lines in test files for better readability and consistency
  refactor: replace map[string]interface{} type with map[string]any for improved type safety in function signatures refactor: update for-loops to use range for better readability in tests and when iterating refactor: simplify sleep duration calculation by using a min function for clarity in logic refactor: utilize slices.Contains for checking topic existence in EventTopics refactor: replace interface{} with any in JSON unmarshalling for better type clarity in duration handling refactor: enhance goroutine handling in tests by adopting range in loops to improve readability
The EIP-7732 execution_payload and execution_payload_gossip SSE events carry a
flat payload summary, not a full SignedExecutionPayloadEnvelope. go-eth2-client
now decodes them into api/v1.ExecutionPayloadEvent; route that type through the
broker instead of the envelope so the handlers actually fire (previously every
event failed to type-assert and was dropped).

Bumps go-eth2-client to the flat-event build.

Claude-Session: https://claude.ai/code/session_014KRVmYwRSsK5pFbghweigM
feat: deliver flat execution_payload / _gossip events
Wires the gloas head_v2 SSE topic through the standard path (topic
constant, dispatch, broker publish, OnHeadV2 subscriber, Node interface)
and bumps go-eth2-client to the build that parses the event. The topic
stays out of the default subscription list like the other gloas topics —
consumers opt in via their topic override.

Claude-Session: https://claude.ai/code/session_019cbhUv62kwFTKQD5aM8FGC
feat: subscribe to and deliver head_v2 events
Adds RawExecutionPayloadEnvelope to the consensus API client and
FetchRawExecutionPayloadEnvelope to the Node interface, exposing
GET /eth/v1/beacon/execution_payload_envelopes/{block_id} (gloas onwards)
in JSON or SSZ depending on the requested content type.

Claude-Session: https://claude.ai/code/session_012CnMNMdPisWGmvKhKzj1ii
…velope

feat: fetch raw signed execution payload envelopes
feat(beacon): add streaming raw API responses
This reverts commit 9f32aa9, reversing
changes made to b274ec0.
Relands the raw-streaming work from #81: OpenRawBeaconState, OpenRawBlock
and OpenRawExecutionPayloadEnvelope returning *api.RawResponse (body plus
the metadata needed to tell a complete transfer from a truncated one), a
dedicated per-node transport with connection and in-flight request caps,
typed HTTP status errors, and the raw response leak counter.

#81 was merged prematurely and reverted in 8d66ce6; this restores the
same tree as new commits so it can go through review properly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
redpandabot[bot]
redpandabot Bot previously approved these changes Aug 10, 2026
@redpandabot
redpandabot Bot dismissed their stale review August 11, 2026 09:14

Dismissing my own approval: it was not a review. A bug in the reviewer meant it could not compute this PR's diff (the base ref was never fetched into origin/), so the model was handed an empty change set, found nothing, and that was recorded as "clean" and approved. It never read this code. Fixed and deployed; the next push to this PR gets a real review.

feat(beacon): add streaming raw API responses
@redpandabot

redpandabot Bot commented Aug 17, 2026

Copy link
Copy Markdown

Summary

This release of the gloas support branch adds raw execution-payload-envelope endpoints, streaming OpenRaw* responses with a bounded-concurrency HTTP client (32 slots/connections, leak detection via runtime.AddCleanup and hybrid observer metrics), head_v2 and EIP-7732 ePBS SSE events, and dependency bumps (go-ethereum, go-eth2-client — both OSV-clean). The streaming/limiter code is defensive and exhaustively tested; I found no blockers, only one small lifecycle asymmetry.

Issues

  • 🟢 pkg/beacon/bootstrap.go:60regular JSON HTTP client is never closed on Stop — ensureClients now creates a persistent regularHTTPClient (&http.Client{Timeout: 10m}) passed into the consensus client, but Stop() only calls CloseIdleConnections() on the raw client (beacon.go:387), so keep-alive connections from the JSON peers/identity/deposit-snapshot calls outlive node shutdown. Impact is minimal (idle sockets age out on their own), but closing it alongside the raw client would make the two clients' lifecycles symmetric.

Reviewed @ 77db92c9
A red panda's tail is nearly as long as its body — balance bar by day, blanket by night.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants