mirror of
https://github.com/Terranom674/Piwigo_Bratonien_Tools.git
synced 2026-09-19 11:44:31 +00:00
Keep WebDAV cancel signals until worker guards are secured
This commit is contained in:
@@ -179,6 +179,7 @@ function bratonien_tools_clear_image_cache_atomic()
|
|||||||
|
|
||||||
$held_locks = array();
|
$held_locks = array();
|
||||||
$webdav_cancel_files = array();
|
$webdav_cancel_files = array();
|
||||||
|
$webdav_guards_ready = false;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -203,6 +204,7 @@ function bratonien_tools_clear_image_cache_atomic()
|
|||||||
// 2. WebDAV-Warmup regulär abbrechen und danach alle Verbindungs-Locks
|
// 2. WebDAV-Warmup regulär abbrechen und danach alle Verbindungs-Locks
|
||||||
// exklusiv halten. Der laufende Batch wird nicht hart beendet.
|
// exklusiv halten. Der laufende Batch wird nicht hart beendet.
|
||||||
bratonien_tools_atomic_cache_prepare_webdav_guards($held_locks, $webdav_cancel_files);
|
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
|
// 3. Seit der Presentation-Refresh-Einführung kann auch dieser Worker
|
||||||
// Derivate erzeugen. Ohne seinen Lock konnte ein gerade geleerter Cache
|
// Derivate erzeugen. Ohne seinen Lock konnte ein gerade geleerter Cache
|
||||||
@@ -323,13 +325,18 @@ function bratonien_tools_clear_image_cache_atomic()
|
|||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
// Die Cancel-Dateien bleiben so lange bestehen, bis wir alle Worker-Locks
|
// Nur wenn wirklich alle WebDAV-Prozess-Locks gesichert wurden, sind die
|
||||||
// wieder freigeben. Erst danach darf ein bewusst neu gestarteter Lauf den
|
// Cancel-Dateien nicht mehr nötig. Bei einem Timeout bleiben sie bestehen,
|
||||||
// leeren Cache erneut aufbauen.
|
// 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)
|
||||||
|
{
|
||||||
foreach ($webdav_cancel_files as $cancel)
|
foreach ($webdav_cancel_files as $cancel)
|
||||||
{
|
{
|
||||||
@unlink($cancel);
|
@unlink($cancel);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
bratonien_tools_atomic_cache_release_locks($held_locks);
|
bratonien_tools_atomic_cache_release_locks($held_locks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user