Add client_exclude to mute deliberately-misbehaving nodes#10
Open
ilitteri wants to merge 1 commit into
Open
Conversation
… and heartbeat client_match is a single substring, so on a devnet where a node is malicious by design (e.g. a "deathstar" proposer that builds on empty / withholds PTC votes) it matches that node too and fires misleading fork / lag / offline / missed-block alerts that aren't real incidents. Add an optional client_exclude list (substrings, same matching as client_match). A client that matches client_match but also matches an exclude entry is dropped entirely: no action alerts and absent from the heartbeat (not shunted into the "other clients" bucket or the status mix). Backward compatible (defaults to empty). Implemented via _is_ours()/_excluded() at the five match gates.
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.
Motivation
client_matchis a single case-insensitive substring, so on a devnet where a node is malicious by design — e.g. a "deathstar" proposer that builds on empty / withholds PTC votes — it matches that node too and fires misleading fork / lag / offline / missed-block alerts that aren't real incidents. On glamsterdam-devnet-6 the deathstar (lodestar-ethrex-1) generated exactly this noise.Description
Adds an optional
client_excludelist (substrings, same matching semantics asclient_match). A client that matchesclient_matchbut also matches an exclude entry is dropped entirely: no action alerts, and absent from the heartbeat digest (not shunted into the "other clients" bucket or the status mix). Backward compatible — defaults to empty, so existing configs are unaffected.Implemented via
_is_ours()/_excluded()helpers applied at the fiveclient_matchgates (missed-block, fork, lag/offline, version-drift, and the two heartbeat aggregations).How to test
With the exclude set against glamsterdam-devnet-6, the heartbeat drops from
ethrex (6 matched)to(5 matched), the excluded node no longer appears, and its missed/orphaned proposals no longer count. Already running on the live devnet-6 monitor instance.