1
0
Fork 0
mirror of synced 2024-09-29 08:51:28 +13:00

feat: catch docker remove errors elegantly

This commit is contained in:
Christy Jacob 2022-02-06 14:00:44 +04:00
parent dea2873845
commit 6ab1095280
3 changed files with 14 additions and 13 deletions

View file

@ -652,14 +652,14 @@ App::delete('/v1/deployments/:deploymentId')
// Remove all the build containers // Remove all the build containers
foreach ($buildIds as $buildId) { foreach ($buildIds as $buildId) {
$status = $orchestration->remove('build-stage-' . $buildId, true); try {
if ($status) { Console::info('Deleting build container : ' . $buildId);
Console::success("Removed build container: $buildId for deployment: " . $deploymentId); $status = $orchestration->remove('build-stage-' . $buildId, true);
} else { } catch (Throwable $th) {
Console::error("Failed to remove build container: $buildId for deployment: " . $deploymentId); Console::error($th->getMessage());
} }
} }
$orchestrationPool->put($orchestration); $orchestrationPool->put($orchestration);
$response $response

View file

@ -358,7 +358,7 @@ class DeletesV1 extends Worker
$executor = new Executor(); $executor = new Executor();
foreach ($deploymentIds as $deploymentId) { foreach ($deploymentIds as $deploymentId) {
try { try {
$executor->deleteRuntime($deploymentId, $projectId); $executor->deleteRuntime($deploymentId, $buildIds[$deploymentId], $projectId);
} catch (Throwable $th) { } catch (Throwable $th) {
Console::error($th->getMessage()); Console::error($th->getMessage());
} }
@ -373,6 +373,7 @@ class DeletesV1 extends Worker
protected function deleteDeployment(Document $document, string $projectId): void protected function deleteDeployment(Document $document, string $projectId): void
{ {
$dbForProject = $this->getProjectDB($projectId); $dbForProject = $this->getProjectDB($projectId);
$deploymentId = $document->getId();
/** /**
* Delete deployment files * Delete deployment files
@ -390,8 +391,8 @@ class DeletesV1 extends Worker
$buildIds = []; $buildIds = [];
$storageBuilds = new Local(APP_STORAGE_BUILDS . '/app-' . $projectId); $storageBuilds = new Local(APP_STORAGE_BUILDS . '/app-' . $projectId);
$this->deleteByGroup('builds', [ $this->deleteByGroup('builds', [
new Query('deploymentId', Query::TYPE_EQUAL, [$document->getId()]) new Query('deploymentId', Query::TYPE_EQUAL, [$deploymentId])
], $dbForProject, function (Document $document) use ($storageBuilds) { ], $dbForProject, function (Document $document) use ($storageBuilds, &$buildIds) {
$buildIds[] = $document->getId(); $buildIds[] = $document->getId();
if ($storageBuilds->delete($document->getAttribute('outputPath', ''), true)) { if ($storageBuilds->delete($document->getAttribute('outputPath', ''), true)) {
Console::success('Deleted build files: ' . $document->getAttribute('outputPath', '')); Console::success('Deleted build files: ' . $document->getAttribute('outputPath', ''));
@ -405,7 +406,7 @@ class DeletesV1 extends Worker
*/ */
try { try {
$executor = new Executor(); $executor = new Executor();
$executor->deleteRuntime($document->getId(), $projectId); $executor->deleteRuntime($deploymentId, $buildIds, $projectId);
} catch (Throwable $th) { } catch (Throwable $th) {
Console::error($th->getMessage()); Console::error($th->getMessage());
} }

View file

@ -63,7 +63,7 @@ class Executor
return $response['body']; return $response['body'];
} }
public function deleteRuntime(string $deploymentId, string $projectId) public function deleteRuntime(string $deploymentId, array $buildIds, string $projectId)
{ {
$route = "/deployments/$deploymentId"; $route = "/deployments/$deploymentId";
$headers = [ $headers = [
@ -72,14 +72,14 @@ class Executor
'x-appwrite-executor-key' => App::getEnv('_APP_EXECUTOR_SECRET', '') 'x-appwrite-executor-key' => App::getEnv('_APP_EXECUTOR_SECRET', '')
]; ];
$params = [ $params = [
'buildIds' => $buildIds[$deploymentId] ?? [], 'buildIds' => $buildIds,
]; ];
$response = $this->call(self::METHOD_DELETE, $route, $headers, $params, true, 30); $response = $this->call(self::METHOD_DELETE, $route, $headers, $params, true, 30);
$status = $response['headers']['status-code']; $status = $response['headers']['status-code'];
if ($status >= 400) { if ($status >= 400) {
throw new \Exception('Error deleting deplyoment: ' . $deploymentId , $status); throw new \Exception('Error deleting deployment: ' . $deploymentId , $status);
} }
return $response['body']; return $response['body'];