Skip to content

v3.6.1 — the cache that forgot on the wrong map

Choose a tag to compare

@productdevbook productdevbook released this 20 Aug 03:19
· 58 commits to main since this release

Fixes the page cache shipped in v3.6.0. Anyone on 3.6.0 should take this.

The round and the render remembered different things

  • src/lib/store.ts is instantiated twice in a server process — once in the Astro bundle that renders, once from source in the process that probes. Invalidation deleted from one copy while the page answered from the other.
  • The page, status.json, history.json, the badge and the feed lagged the last round by up to 15 seconds always, not occasionally.
  • The events list is not cached and is read in the same request, so one document contradicted itself: a row reading "down · HTTP 500" above an event list saying it recovered 16 seconds earlier. 11,665 of 24,064 responses.
  • Fixed by pinning what the page remembers across both copies, as src/server/env.ts already does for the database handle. Verified: updated_at and the newest row agree to the millisecond.
  • Invalidation also ran before the round's writes rather than after, so a render landing mid-round could cache half a round for the whole window — two of four rounds poisoned on Cloudflare.

A group has no answer of its own to give

  • last_status: null means "nothing answered", and group rows published it about hosts that had answered 301 and 503. The field is absent for a group now.

Upgrading

  • A pull. No schema or configuration change.