Edge Cache and CDN Platform  ·  View 17 of 29  ·  5 · Runtime

A PoP Returns — Reconcile Before Serving

A PoP that was away while purges happened catches up from the log before it announces, or throws its cache away logically if the gap is too old.

Editable source SVG draw.io All views
pop-guard BIRD PoP agent Tag tables NATS leaf node JetStream core 1. GRU back after 9 h · stays withdrawn 2. reconcile before serving 3. applied through which seq? 4. 87201 5. resume mirror from 87202 6. 1,318 invalidations, in order 7. apply in order · one commit each 8. gap older than log? → bump generation 9. bundle hash = current global 10. ack · applied through 88519 11. reconciled · config current 12. announce · cold mode on A PoP Returns — Reconcile Before Serving If the PoP was away longer than the 30-day log, it bumps every property generation: a logical flush, never a stale serve. v 1.0 · owner Edge Platform · date 2026-09

Decisions

  • Reconciliation is in the MVP, not Phase 2 as the requirement suggests. With the invalidation log already a replayable stream, it is a replay from a sequence number. Shipping purge without it would ship a purge that can silently fail to happen.
  • The PoP stays withdrawn until the agent confirms both the invalidation position and the configuration bundle. pop-guard does not announce a PoP that is behind on either.
  • A gap older than the log is not partly replayed. Every property's generation number is bumped, which turns every stored object into a miss. That is expensive and always correct.

Numbers

  • Replaying a nine-hour gap of about 1,300 records takes seconds. The 30-day retention covers the 14-day longest tolerated absence with margin.

Risks

  • A PoP that returns without its tag tables, for example after an NVMe failure, has lost its position. The agent treats a missing table as a gap older than the log.