You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(vector): stop a failed restore from deleting multi-layer URL layers
A multi-layer container (a KMZ of KML folders, a GeoPackage of tables)
becomes one store layer per source layer, and every one of them keeps the
container's URL. Three problems compounded from there, reported against
NASA FIRMS fire-footprint KMZ feeds in discussion #1757.
Restoring such a project replays each layer independently, and any layer
whose replay failed was then pruned by the closing store sync, which reads
"the control does not have this layer" as "the user removed it". A feed
that was briefly unreachable therefore deleted the layers from the project
outright, and the next save wrote that loss to disk. Restore now records
which replays failed and keeps those layers, and refresh (the button and
the auto-refresh tick) falls through to a new replay path so the next
successful fetch brings the layer back instead of leaving a dead entry.
Each of those sibling layers also downloaded the container separately: on
desktop a six-layer KMZ pulled the same archive six times over on every
project open and every refresh interval, and unzipped and registered it
into DuckDB six times. Add Vector Layer downloads are now collapsed to one
in-flight request per URL, handing every sibling the identical File so the
control's per-source unzip and registration caches collapse with them.
Those six concurrent downloads then ran into the native fetch command's
tile-sized 8s budget, which is what produced the reporter's "Could not read
response body" failures at exactly 8.4s. fetch_url_bytes now accepts a
caller-supplied timeout, clamped so it can only be raised and never
removed, and the vector loader asks for a download-sized budget.
Finally, a store layer that outlives its map layers no longer has its
style synced, which was filling the Diagnostics panel with "Cannot get
style of non-existing layer" the user could do nothing about.
Ref: #1757
0 commit comments