From f3e7b8eb2481eacd1b8eaf4e6c1f59f68d65a434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 24 Jun 2025 12:42:03 +0200 Subject: [PATCH] Prevent certificate deletion race condition --- src/Appwrite/Platform/Workers/Deletes.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Appwrite/Platform/Workers/Deletes.php b/src/Appwrite/Platform/Workers/Deletes.php index 2f41001b58..1e54bb2b04 100644 --- a/src/Appwrite/Platform/Workers/Deletes.php +++ b/src/Appwrite/Platform/Workers/Deletes.php @@ -1192,6 +1192,21 @@ class Deletes extends Action private function deleteRule(Database $dbForPlatform, Document $document, CertificatesAdapter $certificates): void { $domain = $document->getAttribute('domain'); + + // Race condition prevention + if (System::getEnv('_APP_RULES_FORMAT') === 'md5') { + $rule = $dbForPlatform->getDocument('rules', md5($domain)); + } else { + $rule = $dbForPlatform->findOne('rules', [ + Query::equal('domain', [$domain]), + Query::limit(1) + ]); + } + if ($rule->isEmpty()) { + Console::warning("Race condition in certificate deletion prevented for domain {$domain}"); + return; + } + $certificates->deleteCertificate($domain); // Delete certificate document, so Appwrite is aware of change