From 72eab9c740778e49859c9e64f3a4399ce4c0a35e Mon Sep 17 00:00:00 2001 From: Kulshekhar Kabra Date: Sat, 29 Oct 2016 07:24:43 +0530 Subject: [PATCH 1/3] Close client connections on SIGINT/SIGTERM --- src/cli/parse-server.js | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/cli/parse-server.js b/src/cli/parse-server.js index 028afdd7c6..6437fc0bfc 100755 --- a/src/cli/parse-server.js +++ b/src/cli/parse-server.js @@ -31,9 +31,12 @@ const help = function(){ function startServer(options, callback) { const app = express(); const api = new ParseServer(options); + const sockets = {} + let nextId = 0; app.use(options.mountPath, api); var server = app.listen(options.port, callback); + //server.on('connection', initializeConnections); if (options.startLiveQueryServer || options.liveQueryServerOptions) { let liveQueryServer = server; if (options.liveQueryPort) { @@ -43,8 +46,28 @@ function startServer(options, callback) { } ParseServer.createLiveQueryServer(liveQueryServer, options.liveQueryServerOptions); } + + function initializeConnections(socket) { + const socketId = nextId++; + socket.id = socket.id || socketId; + sockets[socketId] = socket; + + socket.on('close', (s) => { + delete sockets[s.id]; + }) + } + + function shutConnections() { + for (const socketId in sockets) { + try { + sockets[socketId].destroy() + } catch (e) { } + } + } + var handleShutdown = function() { console.log('Termination signal received. Shutting down.'); + shutConnections(); server.close(function () { process.exit(0); }); @@ -98,7 +121,7 @@ runner({ }); } } else { - startServer(options, () => { + startServer(options, (p) => { logOptions(); console.log(''); console.log('['+process.pid+'] parse-server running on '+options.serverURL); From bfa1ca0cf072c90ba697ebfa5fbac406e3352773 Mon Sep 17 00:00:00 2001 From: Kulshekhar Kabra Date: Sat, 29 Oct 2016 20:13:55 +0530 Subject: [PATCH 2/3] Remove an unnecessary parameter --- src/cli/parse-server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cli/parse-server.js b/src/cli/parse-server.js index 6437fc0bfc..c481b80f0a 100755 --- a/src/cli/parse-server.js +++ b/src/cli/parse-server.js @@ -121,7 +121,7 @@ runner({ }); } } else { - startServer(options, (p) => { + startServer(options, () => { logOptions(); console.log(''); console.log('['+process.pid+'] parse-server running on '+options.serverURL); From 000e7aae30f4ea0cbf9a8a39e5f9d7d30a71a866 Mon Sep 17 00:00:00 2001 From: Kulshekhar Kabra Date: Sat, 29 Oct 2016 21:34:00 +0530 Subject: [PATCH 3/3] Uncomment required lines --- src/cli/parse-server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cli/parse-server.js b/src/cli/parse-server.js index c481b80f0a..216b808c5d 100755 --- a/src/cli/parse-server.js +++ b/src/cli/parse-server.js @@ -36,7 +36,7 @@ function startServer(options, callback) { app.use(options.mountPath, api); var server = app.listen(options.port, callback); - //server.on('connection', initializeConnections); + server.on('connection', initializeConnections); if (options.startLiveQueryServer || options.liveQueryServerOptions) { let liveQueryServer = server; if (options.liveQueryPort) {