From 6983a988757ff5155eb0c5b08379cf84ec01d34f Mon Sep 17 00:00:00 2001 From: Terranom674 Date: Sat, 5 Sep 2026 23:43:17 +0200 Subject: [PATCH] Keep WebDAV cancel signals until worker guards are secured --- include/cache_clear_atomic.inc.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/include/cache_clear_atomic.inc.php b/include/cache_clear_atomic.inc.php index d6cb9fb..e9c71f9 100644 --- a/include/cache_clear_atomic.inc.php +++ b/include/cache_clear_atomic.inc.php @@ -179,6 +179,7 @@ function bratonien_tools_clear_image_cache_atomic() $held_locks = array(); $webdav_cancel_files = array(); + $webdav_guards_ready = false; try { @@ -203,6 +204,7 @@ function bratonien_tools_clear_image_cache_atomic() // 2. WebDAV-Warmup regulär abbrechen und danach alle Verbindungs-Locks // exklusiv halten. Der laufende Batch wird nicht hart beendet. bratonien_tools_atomic_cache_prepare_webdav_guards($held_locks, $webdav_cancel_files); + $webdav_guards_ready = true; // 3. Seit der Presentation-Refresh-Einführung kann auch dieser Worker // Derivate erzeugen. Ohne seinen Lock konnte ein gerade geleerter Cache @@ -323,12 +325,17 @@ function bratonien_tools_clear_image_cache_atomic() } finally { - // Die Cancel-Dateien bleiben so lange bestehen, bis wir alle Worker-Locks - // wieder freigeben. Erst danach darf ein bewusst neu gestarteter Lauf den - // leeren Cache erneut aufbauen. - foreach ($webdav_cancel_files as $cancel) + // Nur wenn wirklich alle WebDAV-Prozess-Locks gesichert wurden, sind die + // Cancel-Dateien nicht mehr nötig. Bei einem Timeout bleiben sie bestehen, + // damit der noch laufende Worker nach seinem aktuellen Batch tatsächlich + // stoppt und das fehlgeschlagene Cache-Leeren nicht durch einen Folgebatch + // verschärft wird. + if ($webdav_guards_ready) { - @unlink($cancel); + foreach ($webdav_cancel_files as $cancel) + { + @unlink($cancel); + } } bratonien_tools_atomic_cache_release_locks($held_locks); }