gap: a client that has already visited the city never sees the new BGT collections #260
Labels
No labels
agent
agent:ci
agent:done
agent:failed
agent:needs-input
agent:refined
agent:refining
agent:running
agent:shipped
agent:skip
autonomous
autopilot
driven
local
plan
proposal
qa
qa-gap
research
retro
ship
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jeroen/cartopolis#260
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found while QA'ing #176 (issue #258). #176 raised this as its own open question 2
and closed without answering it. It is now measured.
What I did
Stood in for cartopy's missing
bgt.tson loopback and ran the same viewpointthree times, changing only what the host served and whether the cache was warm:
surveyed_propssurveyed_linesRun 2 is the upgrade a real player gets: the operator re-runs the extractor, and
the client that was already in Groningen keeps the old cell. Not one of the 157
new street objects or 1,588 new boundaries arrives. No error, no log line,
nothing in the UI.
What a user would expect
Re-running the pipeline puts the new content in front of people who already play
there — which is everybody who plays there.
Where the seam is
surveyed::cell_cache_key(crates/cartopolis/src/systems/map/surveyed.rs:299)is
bgt/v2/{z}/{x}/{y}.json, a constant.load_surveyed_cell(:338) returnsthe cached copy whenever one exists, and the comment above
cell_cache_keystates the rest: "nothing ever revalidates a cached cell (the sweep is by size,
not age)". The coverage manifest carries no version to mix in —
zoom,cells,attributionand nothing else (systems/map/coverage.rs:167-193).The last time the served data changed (the ghost-version fix) this was solved by
hand-bumping
v1->v2. That works and is worth naming as the answer, becauseright now nobody has decided it is the answer, and the bump has to be
remembered in a different repository from the one that changes the data.
#176's own three options were: (a) accept it and let size eviction handle it;
(b) put a
versionincoverage.jsonand mix it into the cache key — a changeto the shared
CoverageSlot, so it would fixbag,lod22,brpand the restat the same time; (c) serve the new content under a new path.