Skip to content

feat: deny an indexer whose DIPs info stays down for 48 hours - #768

Merged
MoonBoi9001 merged 11 commits into
mb9/block-indexers-whose-dips-info-stays-downfrom
mb9/denylist-indexers-whose-dips-info-stays-down
Nov 3, 2026
Merged

MoonBoi9001 merged 11 commits into
mb9/block-indexers-whose-dips-info-stays-downfrom
mb9/denylist-indexers-whose-dips-info-stays-down

Conversation

@MoonBoi9001

@MoonBoi9001 MoonBoi9001 commented Oct 30, 2026 •

Copy link
Copy Markdown
Member

This makes the DIPs info watcher block an agreement holder after 48 hours without a readable /dips/info answer, which puts it on the blocklist dipper sends IISA, so IISA drops it and dipper replaces its agreements in the usual add-before-cancel order. The block sits on the watcher's own row, not in the operator denylist, and each cycle renews it until the indexer answers, so it lapses within an hour if the watcher stops.

Dipper can now put an indexer on its denylist under its own name and reason, and later remove
only those entries, so an operator's entry for the same indexer is never added over or lifted.
… hours

Past 48 hours without a readable /dips/info answer, the watcher denies the indexer, so IISA
drops it and its agreements are replaced, and it lifts the denial once the indexer answers.
Writing into the operator denylist got stuck behind an expired entry, came back after an
operator lifted it, and stayed forever once the watcher stopped. A block on the watcher's row,
renewed each cycle and gone once the indexer answers or holds no agreement, avoids all 3.
The startup wiring's comment and the config's descriptions still described an alert-only
watcher, or a denial, after it began blocking indexers past the second limit.
…wers

A block ended once the agreements it got cancelled were gone, since only agreement holders
were asked. Blocked indexers are now asked too, so a block lasts until the indexer answers.
A pause, which points to a fault on dipper's side, let every block lapse within 3 intervals and
freed indexers already found broken. Existing blocks are now renewed, though none is added.
The block's end came from dipper's clock but was compared with the database's, so drift between
them shortened every block. The database now works out the end from a duration dipper passes.
A block lasted 3 intervals, so a slow cycle or a few failed ones could let it lapse before the
next renewal. It now lasts 3 intervals or an hour, whichever is longer, and a test checks it.
Renewing a block that had lapsed, after a restart or a slow cycle, counted as a new one, so
operators were alerted again about indexers that were blocked all along.
The watcher's settings were still described as alert-only after it began blocking indexers.
@MoonBoi9001
MoonBoi9001 marked this pull request as ready for review October 30, 2026 14:50
…/denylist-indexers-whose-dips-info-stays-down
@MoonBoi9001
MoonBoi9001 added this pull request to stack #771 November 2, 2026 15:10
@MoonBoi9001
MoonBoi9001 merged commit 4aed6b7 into main Nov 3, 2026
12 checks passed
@MoonBoi9001
MoonBoi9001 deleted the mb9/denylist-indexers-whose-dips-info-stays-down branch November 3, 2026 12:09
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.

1 participant