-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
46 lines (40 loc) · 1.15 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
let isShutingDown = false;
const logMessage = ({ logger, message }) => {
if (logger) {
logger.info({}, message);
} else {
console.log(message);
}
};
/**
* init
* Listen to the SIGTERM signal and shutdown the given server after a given delay in seconds
*
* @param {http.Server} server
* @param {Integer} shutdownDelay
* @param {@bufferapp/logger} logger
*/
module.exports.init = ({ server, shutdownDelay = 20, logger = null }) => {
const READINESS_PROBE_SHUTDOWN_DELAY = shutdownDelay * 1000;
process.on('SIGTERM', () => {
logMessage({ logger, message: 'SIGTERM received - Starting graceful shutdown' });
isShutingDown = true;
setTimeout(() => {
server.close(err => {
if (err) {
logMessage({ logger, message: `Express app shutdown error, ${err}` });
process.exit(1);
}
logMessage({ logger, message: 'Express app shutdown success' });
process.exit();
});
}, READINESS_PROBE_SHUTDOWN_DELAY);
});
};
/**
* isShutingDown
* Return if the process has received the signal to shut down.
*
* @return {Boolean}
*/
module.exports.isShutingDown = () => isShutingDown;