diff --git a/api/src/api/v2.js b/api/src/api/v2.js index 032fd51..3dfa3ee 100644 --- a/api/src/api/v2.js +++ b/api/src/api/v2.js @@ -210,27 +210,20 @@ router.ws('/connect', async (ws, req) => { if (job === null) { job = await get_job(msg); - try { - await job.prime(); + await job.prime(); - ws.send( - JSON.stringify({ - type: 'runtime', - language: job.runtime.language, - version: job.runtime.version.raw, - }) - ); + ws.send( + JSON.stringify({ + type: 'runtime', + language: job.runtime.language, + version: job.runtime.version.raw, + }) + ); - await job.execute(event_bus); - } catch (error) { - logger.error( - `Error cleaning up job: ${job.uuid}:\n${error}` - ); - throw error; - } finally { - await job.cleanup(); - } - ws.close(4999, 'Job Completed'); // Will not execute if an error is thrown above + await job.execute(event_bus); + await job.cleanup(); + + ws.close(4999, 'Job Completed'); } else { ws.close(4000, 'Already Initialized'); } @@ -272,13 +265,9 @@ 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(); @@ -287,17 +276,11 @@ router.post('/execute', async (req, res) => { result.run = result.compile; } + await job.cleanup(); + return res.status(200).send(result); } catch (error) { - logger.error(`Error executing job: ${job.uuid}:\n${error}`); - return res.status(500).send(); - } finally { - try { - await job.cleanup(); // This gets executed before the returns in try/catch - } catch (error) { - logger.error(`Error cleaning up job: ${job.uuid}:\n${error}`); - return res.status(500).send(); // On error, this replaces the return in the outer try-catch - } + return res.status(400).json(error); } }); diff --git a/api/src/index.js b/api/src/index.js index 6ad9390..8a21e57 100644 --- a/api/src/index.js +++ b/api/src/index.js @@ -35,10 +35,7 @@ expressWs(app); } } }); - fss.chmodSync( - path.join(config.data_directory, globals.data_directories.jobs), - 0o711 - ); + fss.chmodSync(path.join(config.data_directory, globals.data_directories.jobs), 0o711) logger.info('Loading packages'); const pkgdir = path.join( @@ -95,12 +92,7 @@ expressWs(app); logger.debug('Calling app.listen'); const [address, port] = config.bind_address.split(':'); - const server = app.listen(port, address, () => { + app.listen(port, address, () => { logger.info('API server started on', config.bind_address); }); - - process.on('SIGTERM', () => { - server.close(); - process.exit(0) - }); })(); diff --git a/packages/bash/5.2.0/build.sh b/packages/bash/5.2.0/build.sh old mode 100755 new mode 100644 diff --git a/repo/Dockerfile b/repo/Dockerfile index 86be49a..fe61a6f 100644 --- a/repo/Dockerfile +++ b/repo/Dockerfile @@ -14,7 +14,7 @@ RUN apt-get update && apt-get install -y unzip autoconf build-essential libssl-d rm -rf /var/lib/apt/lists/* && \ update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2 -ADD entrypoint.sh mkindex.sh serve.py / +ADD entrypoint.sh mkindex.sh / ENTRYPOINT ["bash","/entrypoint.sh"] CMD ["--no-build"] diff --git a/repo/entrypoint.sh b/repo/entrypoint.sh index c167463..6c47e37 100755 --- a/repo/entrypoint.sh +++ b/repo/entrypoint.sh @@ -27,7 +27,7 @@ do echo "Done with package $pkg" elif [[ $CI -eq 1 ]]; then echo "Commit SHA: $pkg" - + cd .. echo "Changed files:" git diff --name-only $pkg^1 $pkg @@ -52,9 +52,8 @@ echo "Index created" if [[ $SERVER -eq 1 ]]; then echo "Starting index server.." - # We want the child process to replace the shell to handle signals - exec python3 /serve.py + python3 -m http.server else echo "Skipping starting index server" fi -exit 0 +exit 0 \ No newline at end of file diff --git a/repo/serve.py b/repo/serve.py deleted file mode 100644 index a821219..0000000 --- a/repo/serve.py +++ /dev/null @@ -1,18 +0,0 @@ -import signal -import sys -import http.server -import socketserver - -PORT = 8000 - -Handler = http.server.SimpleHTTPRequestHandler - - -def signal_handler(sig, frame): - sys.exit(0) - -signal.signal(signal.SIGTERM, signal_handler) - -with socketserver.TCPServer(("", PORT), Handler) as httpd: - print("serving at port", PORT) - httpd.serve_forever()