Fix Planetiler tmp-file format detection, add build progress and delete
Root cause of "planetiler exited with status 1: ... Unsupported format
tmp" (and likely the earlier unexplained "pmtiles exited with status
1"): Planetiler/go-pmtiles pick their output archive format from the
file extension, and the atomic-rename tmp files were named
"offline.pmtiles.tmp"/"terrain.pmtiles.tmp" — ".tmp" as the extension,
not ".pmtiles". Renamed to "offline.tmp.pmtiles"/"terrain.tmp.pmtiles".
Also, since build-status only ever said "running since X" with no way
to tell what it was actually doing:
- GET .../build-status now includes a `step` string ("fetching PL
(3/4) — done: SK, CZ — pending: HU", "tiling with planetiler", ...)
while a build is in progress.
- DELETE /api/offline-tiles / /api/terrain-tiles clear a built file,
its sidecar meta, and (for offline) the whole per-country download
cache — a manual "reclaim space" / "start over" action the region
picker's Apply never did on its own. DELETE
/api/offline-tiles/cache/:code clears just one country's cached
extract. All three are 409 while that kind's build is running, and
surfaced as a small "Delete" button on each row in the Offline data
panel.
This commit is contained in:
1 parent
2878270187
commit
b54020e23b
7 files changed
+327
-23
No files matched your search
@@ -277,6 +277,33 @@ module Maptool
|
||||
json PmtilesBuilder.offline_status
|
||||
end
|
||||
|
||||
# Deletes offline.pmtiles plus its whole per-country download cache —
|
||||
# a manual "reclaim the space"/"start over" action, distinct from
|
||||
# unticking countries in the region picker (which only changes what a
|
||||
# future build covers, doesn't free anything already on disk).
|
||||
delete "/api/offline-tiles" do
|
||||
require_login!
|
||||
begin
|
||||
PmtilesBuilder.delete_offline_data(DATA_DIR)
|
||||
rescue PmtilesBuilder::BuildError => e
|
||||
halt 409, json(error: e.message)
|
||||
end
|
||||
json ok: true
|
||||
end
|
||||
|
||||
# Deletes one country's cached Geofabrik extract only — e.g. to force a
|
||||
# clean re-download of just that one, or reclaim space for a country
|
||||
# that's no longer selected (the cache otherwise keeps it indefinitely).
|
||||
delete "/api/offline-tiles/cache/:code" do
|
||||
require_login!
|
||||
begin
|
||||
PmtilesBuilder.delete_cached_extract(DATA_DIR, params[:code])
|
||||
rescue PmtilesBuilder::BuildError => e
|
||||
halt 409, json(error: e.message)
|
||||
end
|
||||
json ok: true
|
||||
end
|
||||
|
||||
# Same optional-local-file story as offline.pmtiles above — see
|
||||
# docs/development.adoc for how to generate one, until then hillshade
|
||||
# just stays unavailable while the offline basemap is active.
|
||||
@@ -309,6 +336,17 @@ module Maptool
|
||||
json PmtilesBuilder.terrain_status
|
||||
end
|
||||
|
||||
# Same reasoning as DELETE /api/offline-tiles above.
|
||||
delete "/api/terrain-tiles" do
|
||||
require_login!
|
||||
begin
|
||||
PmtilesBuilder.delete_terrain_data(DATA_DIR)
|
||||
rescue PmtilesBuilder::BuildError => e
|
||||
halt 409, json(error: e.message)
|
||||
end
|
||||
json ok: true
|
||||
end
|
||||
|
||||
# Pinged once per page load (public/js/map.js) — url is a same-origin
|
||||
# path (not kiwix-serve's own address, which the browser can't reach
|
||||
# directly behind the reverse proxy in front of this app), proxied by
|
||||
|
||||
Reference in new issue
Block a user