From 8af6cd59b0136995c8b6d72b76713455628d4e8d Mon Sep 17 00:00:00 2001 From: Nikhil Sharma Date: Fri, 26 May 2023 16:23:51 +0530 Subject: [PATCH] add graceful shutdown for node18 functions Signed-off-by: Nikhil Sharma --- template/node18/index.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/template/node18/index.js b/template/node18/index.js index 1b16ed7f..251aa1c6 100644 --- a/template/node18/index.js +++ b/template/node18/index.js @@ -7,7 +7,7 @@ const express = require('express') const app = express() const handler = require('./function/handler'); -const bodyParser = require('body-parser') +const bodyParser = require('body-parser'); const defaultMaxSize = '100kb' // body-parser default @@ -137,8 +137,25 @@ app.options('/*', middleware); const port = process.env.http_port || 3000; -app.listen(port, () => { +const server = app.listen(port, () => { console.log(`node18 listening on port: ${port}`) }); +const writeTimeout = process.env.write_timeout; + +process.on('SIGTERM', async () => { + console.log(`Function got SIGTERM event, draining up to: ${writeTimeout}`); + await gracefulShutdown(); +}) + +async function gracefulShutdown() { + await new Promise((resolve) => { + setTimeout(resolve, writeTimeout); + }) + + server.close(() => { + console.log('Server gracefully shut down'); + process.exit(0); + }); +}