Skip to content

feat(collector): fallback to any probe if anchor gone (#3569)#3570

Merged
bgm-malbeclabs merged 1 commit intomainfrom
bgm/ripe-atlas-anchor-fallback
Apr 23, 2026
Merged

feat(collector): fallback to any probe if anchor gone (#3569)#3570
bgm-malbeclabs merged 1 commit intomainfrom
bgm/ripe-atlas-anchor-fallback

Conversation

@bgm-malbeclabs
Copy link
Copy Markdown
Contributor

@bgm-malbeclabs bgm-malbeclabs commented Apr 22, 2026

Summary of Changes

Probes were failing for SLC so this PR enables fallback logic to non-anchor probes in the even the probes are not available.

Identifying Probe Issue

  1. Alert fired - query showed slc ripeatlas samples stopped at 19:47 UTC
  2. Logs revealed the collector's measurement-rotation cycle deleted the slc measurement and didn't recreate it
  3. The "No responsive probes found for location: slc" log + the is_anchor=true filter in client.go explained why; probe 7549 was slc's only anchor within 60 km

To resolve: anchor-preferred with non-anchor fallback, pushed on bgm/ripe-atlas-anchor-fallback.

Closes #3569

Testing Verification

  • Updated existing tests

@bgm-malbeclabs bgm-malbeclabs merged commit 048a26b into main Apr 23, 2026
36 checks passed
@bgm-malbeclabs bgm-malbeclabs deleted the bgm/ripe-atlas-anchor-fallback branch April 23, 2026 15:51
nikw9944 added a commit that referenced this pull request Apr 23, 2026
…nresponsive (#3576)

## Summary

- Fixes the "No responsive probes found for location: slc" error where a
location goes dark even though non-anchor probes are available
- Adds `fetchFallbackProbesForUnresponsiveLocations` in
`configureMeasurements`, called before `generateWantedMeasurements`,
which detects locations where all known probes are unresponsive and
fetches non-anchor Connected probes as a replacement

## Context

PR #3570 added a fallback in `fetchProbesWithErrorHandling` that retries
without `is_anchor=true` when the RIPE Atlas API returns zero anchors.
That handles the "no anchors in area" case but misses the more common
failure mode: RIPE Atlas still reports the anchor as `Connected` (so the
API returns it), but the probe has stopped responding to our
measurements and was marked unresponsive in the local measurement state.
When `generateWantedMeasurements` runs `filterResponsiveProbes`, the
anchor is excluded and the location is skipped with no fallback.

## Test plan

- [x] Two new unit tests: fallback triggered when all probes
unresponsive, no fallback when at least one is responsive
- [x] Full `ripeatlas` package tests pass
- [x ] Deploy snapshot to devnet and verify SLC measurements are created
using non-anchor probes
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.

collector: fallback if no anchor probes are found

2 participants