From 2a84b76d3346407a2300cb80564cf581c0f06d2a Mon Sep 17 00:00:00 2001 From: Antoine Jacquin Date: Sat, 26 Sep 2026 11:00:31 +0200 Subject: [PATCH] Invalider un marqueur de tuile vide des que des sources plus recentes apparaissent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Une tuile rendue transparente (aucune donnee a l'epoque) gardait son marqueur .empty pour toujours : naviguer une zone avant de la generer la laissait vide a jamais en mode cache seule. Le marqueur suit desormais la meme regle de fraicheur que la tuile — plus vieux qu'une source (dalle apparue depuis, version amont plus neuve), il est retire : la tuile redevient en attente, rapatriee de l'amont ou rendue par la maintenance. --- lidar_pipeline/tiles.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lidar_pipeline/tiles.py b/lidar_pipeline/tiles.py index cfcab9d..091b5b6 100644 --- a/lidar_pipeline/tiles.py +++ b/lidar_pipeline/tiles.py @@ -805,13 +805,22 @@ def cached_tile(output_dir, layer, z, x, y, scale=1, fmt="png"): if not empty.exists(): _write_atomic(empty, b"") return None, "empty" - if empty.exists(): - return None, "empty" newest = 0.0 for src in sources: m = src.mtime() if m and m > newest: newest = m + # Même règle de fraîcheur que la tuile : un marqueur .empty plus vieux + # qu'une source (dalle apparue depuis, version amont plus neuve) est + # invalidé — sinon une zone naviguée avant sa génération resterait + # transparente à jamais. + if empty.exists(): + try: + if newest and empty.stat().st_mtime >= newest: + return None, "empty" + except OSError: + return None, "empty" + empty.unlink(missing_ok=True) try: if cache.stat().st_mtime >= newest: return cache.read_bytes(), "fresh"