Skip to content

feat: alert when an agreement holder's DIPs info stays down - #767

Merged
MoonBoi9001 merged 12 commits into
mainfrom
mb9/block-indexers-whose-dips-info-stays-down
Nov 3, 2026
Merged

MoonBoi9001 merged 12 commits into
mainfrom
mb9/block-indexers-whose-dips-info-stays-down

Conversation

@MoonBoi9001

@MoonBoi9001 MoonBoi9001 commented Oct 30, 2026 •

Copy link
Copy Markdown
Member

IISA never replaces a current indexer it has no readable DIPs info for, so an indexer can remove its /dips/info endpoint to avoid being replaced for poor performance. This adds a watcher that checks every agreement holder's DIPs info every 5 minutes, reading it as IISA's score job does, and raises dips_info_missing after 24 hours without a readable answer, not counting cycles in which half or more fail at once.

Important

Off until the deployed config sets dips_info_watcher.enabled to true.

A new table keeps, for each indexer holding an accepted agreement, how long its /dips/info has
given no readable answer. Each cycle adds time for the missing ones and forgets the rest.
…able

IISA can't score an indexer without DIPs info, so nothing replaces it. A new watcher asks each
agreement holder for its DIPs info every 5 minutes and alerts after 24 hours without an answer.
Counting missing DIPs info can stay paused for as long as most agreement holders lack it, as
after a release that changes /dips/info, so its alert now repeats instead of firing once.
A missing share hovering around the trip fraction paused and resumed counting every cycle,
repeating its alert. Counting now resumes after 3 calm cycles in a row.
Slack posts 1 message per event in each throttle window and only counts the rest, so indexers
reaching the limit together lost their IDs. 1 alert per cycle now names all of them.
A cycle that failed to read or write the database threw away the time since the last one, so
missing DIPs info added up slower. That time now carries into the next recorded cycle.
A stop waited for every /dips/info request in the cycle, up to 10 seconds each, well past the
5 seconds shutdown allows each service. It now drops the cycle before anything is recorded.
A check that crashed left its indexer off the missing list, so its built-up time was wiped as
if it had answered. It now counts as missing, and the error log names the indexer.
A timeout of 0 makes every /dips/info request fail at once, so every agreement holder would
look as if its DIPs info were missing. Dipper now refuses to start with it.
A huge interval let a cycle's time overflow the stored missing-time count, which then failed
to save on every cycle. Dipper now refuses an interval over 1 day.
The setting's description said the share applied when none of the indexers answered, which
misread it. It now says that share answering unreadably at once pauses counting.
@MoonBoi9001
MoonBoi9001 marked this pull request as ready for review October 30, 2026 14:50
@MoonBoi9001
MoonBoi9001 added this pull request to stack #771 November 2, 2026 15:10
@MoonBoi9001
MoonBoi9001 merged commit 0ad4808 into main Nov 3, 2026
12 checks passed
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