diff --git a/keyserver/src/keyserver.js b/keyserver/src/keyserver.js --- a/keyserver/src/keyserver.js +++ b/keyserver/src/keyserver.js @@ -95,8 +95,29 @@ const areEndpointMetricsEnabled = process.env.KEYSERVER_ENDPOINT_METRICS_ENABLED; + const listenAddress = (() => { + if (process.env.COMM_LISTEN_ADDR) { + return process.env.COMM_LISTEN_ADDR; + } else if (process.env.NODE_ENV === 'development') { + return undefined; + } else { + return 'localhost'; + } + })(); + if (cluster.isMaster) { if (isPrimaryNode) { + const app = express(); + app.use(express.json({ limit: '250mb' })); + app.get('/health', (req: $Request, res: $Response) => { + res.send('OK'); + }); + + const server = app.listen( + parseInt(process.env.PORT, 10) || 3000, + listenAddress, + ); + const didMigrationsSucceed: boolean = await migrate(); if (!didMigrationsSucceed) { // The following line uses exit code 2 to ensure nodemon exits @@ -104,6 +125,18 @@ // in https://github.com/remy/nodemon/issues/751 process.exit(2); } + + if (server) { + await new Promise((resolve, reject) => { + server.close(err => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); + } } if (shouldDisplayQRCodeInTerminal && isPrimaryNode) { @@ -317,16 +350,6 @@ }); } - const listenAddress = (() => { - if (process.env.COMM_LISTEN_ADDR) { - return process.env.COMM_LISTEN_ADDR; - } else if (process.env.NODE_ENV === 'development') { - return undefined; - } else { - return 'localhost'; - } - })(); - server.listen(parseInt(process.env.PORT, 10) || 3000, listenAddress); } })();