Skip to content

Stop emitting duplicate head events for gloas - #11127

Open
Matilda-Clerke wants to merge 7 commits into
Consensys-Incorporated:masterfrom
Matilda-Clerke:stop-emitting-duplicate-head-events-for-gloas
Open

Stop emitting duplicate head events for gloas#11127
Matilda-Clerke wants to merge 7 commits into
Consensys-Incorporated:masterfrom
Matilda-Clerke:stop-emitting-duplicate-head-events-for-gloas

Conversation

@Matilda-Clerke

@Matilda-Clerke Matilda-Clerke commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

PR Description

Stop emitting head v1 events post-GLOAS

Fixed Issue(s)

#10976

Changelog

  • I thought about adding a changelog entry, and added one if I deemed necessary.

Note

Medium Risk
Changes observable REST event behavior for integrations subscribed to head on GLOAS networks; mitigated because head_v2 continues to fire for the same updates.

Overview
On GLOAS and later milestones, beacon REST SSE subscribers no longer receive duplicate head (v1) events when the chain head updates; head_v2 remains emitted for every head update as before.

EventSubscriptionManager.chainHeadUpdated now only calls notifySubscribersOfEvent(EventType.head, …) when spec.atSlot(slot).getMilestone() is strictly before SpecMilestone.GLOAS. Pre-GLOAS behavior is unchanged.

Tests were updated for a minimal Gloas spec to assert event: head is absent while head_v2 is still delivered when clients subscribe to both topics. The changelog records this under bug fixes.

Reviewed by Cursor Bugbot for commit eb8ad51. Bugbot is set up for automated code reviews on this repo. Configure here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Reviewed by Cursor Bugbot for commit eb8ad51. Configure here.

previousDutyDependentRoot,
currentDutyDependentRoot);
notifySubscribersOfEvent(EventType.head, headEvent);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Head stop breaks remote validators

High Severity

Gating head behind pre-GLOAS stops events that Teku's remote validator still exclusively consumes. That client only subscribes to head and uses it for onHeadUpdate duty revalidation and early attestation triggers, so after GLOAS those validators receive no head notifications and duties may not recalculate on reorgs.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit eb8ad51. Configure here.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is addressed in #11130

Comment thread CHANGELOG.md Outdated

@rolfyone rolfyone left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

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.

2 participants