From 5f22022527d88dbef6202c9c12265863af373901 Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 16 Jan 2026 18:33:27 +0530 Subject: [PATCH] fix: async being missed. --- .../Functions/Http/Executions/Create.php | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php b/src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php index 8c4b68edb6..cc54068b81 100644 --- a/src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php +++ b/src/Appwrite/Platform/Modules/Functions/Http/Executions/Create.php @@ -168,6 +168,7 @@ class Create extends Base throw new Exception($validator->getDescription(), 400); } + /* @var Document $function */ $function = $authorization->skip(fn () => $dbForProject->getDocument('functions', $functionId)); $isAPIKey = User::isApp($authorization->getRoles()); @@ -344,6 +345,13 @@ class Create extends Base $execution = $authorization->skip(fn () => $dbForProject->createDocument('executions', $execution)); } + $this->enqueueDeletes( + $project, + $function->getSequence(), + $executionsRetentionCount, + $queueForDeletes + ); + return $response ->setStatusCode(Response::STATUS_CODE_ACCEPTED) ->dynamic($execution, Response::MODEL_EXECUTION); @@ -517,18 +525,33 @@ class Create extends Base } } - /* cleanup */ - if ($executionsRetentionCount > 0) { + $this->enqueueDeletes( + $project, + $function->getSequence(), + $executionsRetentionCount, $queueForDeletes - ->setProject($project) - ->setResource($function->getSequence()) - ->setResourceType(RESOURCE_TYPE_FUNCTIONS) - ->setType(DELETE_TYPE_EXECUTIONS_LIMIT) - ->trigger(); - } + ); $response ->setStatusCode(Response::STATUS_CODE_CREATED) ->dynamic($execution, Response::MODEL_EXECUTION); } + + private function enqueueDeletes( + Document $project, + int $resourceId, + int $retention, + DeleteEvent $queueForDeletes + ): void + { + /* cleanup */ + if ($retention > 0) { + $queueForDeletes + ->setProject($project) + ->setResource($resourceId) + ->setResourceType(RESOURCE_TYPE_FUNCTIONS) + ->setType(DELETE_TYPE_EXECUTIONS_LIMIT) + ->trigger(); + } + } }