Repository navigation
feat: deny an indexer whose DIPs info stays down for 48 hours - #768
Merged
MoonBoi9001 merged 11 commits intoNov 3, 2026
Conversation
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
marked this pull request as ready for review
October 30, 2026 14:50
…/denylist-indexers-whose-dips-info-stays-down
MoonBoi9001
deleted the
mb9/denylist-indexers-whose-dips-info-stays-down
branch
November 3, 2026 12:09
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.
This makes the DIPs info watcher block an agreement holder after 48 hours without a readable
/dips/infoanswer, 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.