Skip to content

Add slow retry phase for tiles exhausting fast retries on 503#211

Merged
stef-k merged 1 commit intomainfrom
fix/tile-slow-retry-recovery
Mar 26, 2026
Merged

Add slow retry phase for tiles exhausting fast retries on 503#211
stef-k merged 1 commit intomainfrom
fix/tile-slow-retry-recovery

Conversation

@stef-k
Copy link
Copy Markdown
Owner

@stef-k stef-k commented Mar 26, 2026

Summary

  • After 5 fast retries with exponential backoff exhaust on 503, tiles now enter indefinite 30-second polling instead of going permanently gray
  • Each slow-phase trigger resets the attempt counter, giving the tile a fresh fast-retry cycle
  • Jitter (±25%) on slow retries prevents synchronized bursts
  • Network errors also get slow retry (transient); 404 and other HTTP errors remain permanent failures
  • Ensures all tiles eventually load once the per-IP sliding-window budget decays (~60s)

Closes #206

Test plan

  • dotnet build passes (0 errors)
  • dotnet test passes (1407 tests)
  • Cold-cache test at zoom 17-18: all tiles should eventually load (some may take 30-60s for slow retry to kick in)
  • Panning/zooming away cancels slow retry timers (no leaked timers)
  • 404 tiles still show as permanent gray (no slow retry)

After 5 fast retries with exponential backoff, tiles that still get 503
(per-IP budget not yet decayed) now enter indefinite 30s polling instead
of going permanently gray. Tiles keep retrying until they load or are
removed (panned/zoomed away). Network errors also get slow retry since
they may be transient. 404 and other HTTP errors remain permanent.

Closes #206
@stef-k stef-k merged commit bc8894f into main Mar 26, 2026
1 check passed
@stef-k stef-k deleted the fix/tile-slow-retry-recovery branch March 26, 2026 21:16
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.

Cold-cache tile loading returns gray areas instead of progressively filling tiles

1 participant