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
@@ -72,6 +72,9 @@ class AppTest < Minitest::Test
|
||||
assert_equal 401, request.post("/api/plugins/test-plugin/run").status
|
||||
assert_equal 401, request.post("/api/offline-tiles/build").status
|
||||
assert_equal 401, request.post("/api/terrain-tiles/build").status
|
||||
assert_equal 401, request.delete("/api/offline-tiles").status
|
||||
assert_equal 401, request.delete("/api/offline-tiles/cache/SK").status
|
||||
assert_equal 401, request.delete("/api/terrain-tiles").status
|
||||
end
|
||||
|
||||
# --- GPX/FIT upload and the tree ---
|
||||
@@ -417,6 +420,35 @@ class AppTest < Minitest::Test
|
||||
thread&.join
|
||||
end
|
||||
|
||||
def test_offline_tiles_delete_is_ok_when_nothing_was_built
|
||||
assert_equal 200, request.delete("/api/offline-tiles", **logged_in_env).status
|
||||
end
|
||||
|
||||
def test_offline_tiles_delete_removes_the_file_and_cache
|
||||
path = File.join(Maptool::App::DATA_DIR, "offline.pmtiles")
|
||||
cache_dir = File.join(Maptool::App::DATA_DIR, "geofabrik_cache")
|
||||
File.write(path, "fake")
|
||||
FileUtils.mkdir_p(cache_dir)
|
||||
File.write(File.join(cache_dir, "SK.osm.pbf"), "fake")
|
||||
|
||||
response = request.delete("/api/offline-tiles", **logged_in_env)
|
||||
|
||||
assert_equal 200, response.status
|
||||
refute_path_exists path
|
||||
refute_path_exists cache_dir
|
||||
end
|
||||
|
||||
def test_offline_tiles_delete_is_409_when_a_build_is_running
|
||||
Maptool::PmtilesBuilder.set_selected_regions(Maptool::App::DATA_DIR, ["SK"])
|
||||
gate = Queue.new
|
||||
thread = Maptool::PmtilesBuilder.build_offline(data_dir: Maptool::App::DATA_DIR, download_extract: ->(_url, _dest) { gate.pop })
|
||||
|
||||
assert_equal 409, request.delete("/api/offline-tiles", **logged_in_env).status
|
||||
ensure
|
||||
gate.push("unused")
|
||||
thread&.join
|
||||
end
|
||||
|
||||
# --- LiveTrack webhook ---
|
||||
|
||||
def test_livetrack_webhook_requires_the_configured_secret
|
||||
|
||||
Reference in new issue
Block a user