From fe2fc374aa0b4f1a6631047651511af98445da13 Mon Sep 17 00:00:00 2001 From: Omar Brikaa Date: Fri, 15 Sep 2023 16:48:35 +0300 Subject: [PATCH] Improve normal execution error handling - Properly differentiate between bad requests and internal server errors - Avoid clean up evasion by putting the cleanup in the finally block --- api/src/api/v2.js | 20 +++++++++++++++----- packages/bash/5.2.0/build.sh | 0 2 files changed, 15 insertions(+), 5 deletions(-) mode change 100644 => 100755 packages/bash/5.2.0/build.sh diff --git a/api/src/api/v2.js b/api/src/api/v2.js index 3dfa3ee..ad07494 100644 --- a/api/src/api/v2.js +++ b/api/src/api/v2.js @@ -265,9 +265,13 @@ router.ws('/connect', async (ws, req) => { }); router.post('/execute', async (req, res) => { + let job; + try { + job = await get_job(req.body); + } catch (error) { + return res.status(400).json(error); + } try { - const job = await get_job(req.body); - await job.prime(); let result = await job.execute(); @@ -276,11 +280,17 @@ router.post('/execute', async (req, res) => { result.run = result.compile; } - await job.cleanup(); - return res.status(200).send(result); } catch (error) { - return res.status(400).json(error); + logger.error(`Error executing job: ${job.uuid}:\n${error}`); + return res.status(500).send(); + } finally { + try { + await job.cleanup(); + } catch (error) { + logger.error(`Error cleaning up job: ${job.uuid}:\n${error}`); + return res.status(500).send(); + } } }); diff --git a/packages/bash/5.2.0/build.sh b/packages/bash/5.2.0/build.sh old mode 100644 new mode 100755