From 6ab1095280d77dec09a8d2c2a5d4770679658f01 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Sun, 6 Feb 2022 14:00:44 +0400 Subject: [PATCH] feat: catch docker remove errors elegantly --- app/executor.php | 12 ++++++------ app/workers/deletes.php | 9 +++++---- src/Executor/Executor.php | 6 +++--- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/app/executor.php b/app/executor.php index 55120c2f4b..78acb606bf 100644 --- a/app/executor.php +++ b/app/executor.php @@ -652,14 +652,14 @@ App::delete('/v1/deployments/:deploymentId') // Remove all the build containers foreach ($buildIds as $buildId) { - $status = $orchestration->remove('build-stage-' . $buildId, true); - if ($status) { - Console::success("Removed build container: $buildId for deployment: " . $deploymentId); - } else { - Console::error("Failed to remove build container: $buildId for deployment: " . $deploymentId); + try { + Console::info('Deleting build container : ' . $buildId); + $status = $orchestration->remove('build-stage-' . $buildId, true); + } catch (Throwable $th) { + Console::error($th->getMessage()); } } - + $orchestrationPool->put($orchestration); $response diff --git a/app/workers/deletes.php b/app/workers/deletes.php index 0760a67886..45414434e9 100644 --- a/app/workers/deletes.php +++ b/app/workers/deletes.php @@ -358,7 +358,7 @@ class DeletesV1 extends Worker $executor = new Executor(); foreach ($deploymentIds as $deploymentId) { try { - $executor->deleteRuntime($deploymentId, $projectId); + $executor->deleteRuntime($deploymentId, $buildIds[$deploymentId], $projectId); } catch (Throwable $th) { Console::error($th->getMessage()); } @@ -373,6 +373,7 @@ class DeletesV1 extends Worker protected function deleteDeployment(Document $document, string $projectId): void { $dbForProject = $this->getProjectDB($projectId); + $deploymentId = $document->getId(); /** * Delete deployment files @@ -390,8 +391,8 @@ class DeletesV1 extends Worker $buildIds = []; $storageBuilds = new Local(APP_STORAGE_BUILDS . '/app-' . $projectId); $this->deleteByGroup('builds', [ - new Query('deploymentId', Query::TYPE_EQUAL, [$document->getId()]) - ], $dbForProject, function (Document $document) use ($storageBuilds) { + new Query('deploymentId', Query::TYPE_EQUAL, [$deploymentId]) + ], $dbForProject, function (Document $document) use ($storageBuilds, &$buildIds) { $buildIds[] = $document->getId(); if ($storageBuilds->delete($document->getAttribute('outputPath', ''), true)) { Console::success('Deleted build files: ' . $document->getAttribute('outputPath', '')); @@ -405,7 +406,7 @@ class DeletesV1 extends Worker */ try { $executor = new Executor(); - $executor->deleteRuntime($document->getId(), $projectId); + $executor->deleteRuntime($deploymentId, $buildIds, $projectId); } catch (Throwable $th) { Console::error($th->getMessage()); } diff --git a/src/Executor/Executor.php b/src/Executor/Executor.php index 41225c6a50..e297c30d7e 100644 --- a/src/Executor/Executor.php +++ b/src/Executor/Executor.php @@ -63,7 +63,7 @@ class Executor return $response['body']; } - public function deleteRuntime(string $deploymentId, string $projectId) + public function deleteRuntime(string $deploymentId, array $buildIds, string $projectId) { $route = "/deployments/$deploymentId"; $headers = [ @@ -72,14 +72,14 @@ class Executor 'x-appwrite-executor-key' => App::getEnv('_APP_EXECUTOR_SECRET', '') ]; $params = [ - 'buildIds' => $buildIds[$deploymentId] ?? [], + 'buildIds' => $buildIds, ]; $response = $this->call(self::METHOD_DELETE, $route, $headers, $params, true, 30); $status = $response['headers']['status-code']; if ($status >= 400) { - throw new \Exception('Error deleting deplyoment: ' . $deploymentId , $status); + throw new \Exception('Error deleting deployment: ' . $deploymentId , $status); } return $response['body'];