Removes un-necessary shutdown handler (#3786)
* Removes un-necessary shutdown handler - When registering a shutdown hander, the node process has to be exited manually which causes issues for many users * Proper graceful shutdown from CLI
This commit is contained in:
committed by
Arthur Cinader
parent
864d191d0c
commit
8d67776c2e
@@ -97,17 +97,6 @@ export class MongoStorageAdapter {
|
|||||||
|
|
||||||
// MaxTimeMS is not a global MongoDB client option, it is applied per operation.
|
// MaxTimeMS is not a global MongoDB client option, it is applied per operation.
|
||||||
this._maxTimeMS = mongoOptions.maxTimeMS;
|
this._maxTimeMS = mongoOptions.maxTimeMS;
|
||||||
process.on('SIGTERM', this.handleShutdown(this));
|
|
||||||
process.on('SIGINT', this.handleShutdown(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
handleShutdown(storageAdapter) {
|
|
||||||
return () => {
|
|
||||||
if (!storageAdapter.database) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
storageAdapter.database.close(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
connect() {
|
connect() {
|
||||||
@@ -139,6 +128,13 @@ export class MongoStorageAdapter {
|
|||||||
return this.connectionPromise;
|
return this.connectionPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleShutdown() {
|
||||||
|
if (!this.database) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.database.close(false);
|
||||||
|
}
|
||||||
|
|
||||||
_adaptiveCollection(name: string) {
|
_adaptiveCollection(name: string) {
|
||||||
return this.connect()
|
return this.connect()
|
||||||
.then(() => this.database.collection(this._collectionPrefix + name))
|
.then(() => this.database.collection(this._collectionPrefix + name))
|
||||||
|
|||||||
@@ -313,6 +313,13 @@ class ParseServer {
|
|||||||
return ParseServer.app(this.config);
|
return ParseServer.app(this.config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleShutdown() {
|
||||||
|
const { adapter } = this.config.databaseController;
|
||||||
|
if (adapter && typeof adapter.handleShutdown === 'function') {
|
||||||
|
adapter.handleShutdown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static app({maxUploadSize = '20mb', appId}) {
|
static app({maxUploadSize = '20mb', appId}) {
|
||||||
// This app serves the Parse API directly.
|
// This app serves the Parse API directly.
|
||||||
// It's the equivalent of https://api.parse.com/1 in the hosted Parse API.
|
// It's the equivalent of https://api.parse.com/1 in the hosted Parse API.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* eslint-disable no-console */
|
/* eslint-disable no-console */
|
||||||
import express from 'express';
|
import express from 'express';
|
||||||
import { ParseServer } from '../index';
|
import ParseServer from '../index';
|
||||||
import definitions from './definitions/parse-server';
|
import definitions from './definitions/parse-server';
|
||||||
import cluster from 'cluster';
|
import cluster from 'cluster';
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
@@ -43,9 +43,9 @@ function startServer(options, callback) {
|
|||||||
app.use(middleware);
|
app.use(middleware);
|
||||||
}
|
}
|
||||||
|
|
||||||
const api = new ParseServer(options);
|
const parseServer = new ParseServer(options);
|
||||||
const sockets = {};
|
const sockets = {};
|
||||||
app.use(options.mountPath, api);
|
app.use(options.mountPath, parseServer.app);
|
||||||
|
|
||||||
const server = app.listen(options.port, options.host, callback);
|
const server = app.listen(options.port, options.host, callback);
|
||||||
server.on('connection', initializeConnections);
|
server.on('connection', initializeConnections);
|
||||||
@@ -85,6 +85,7 @@ function startServer(options, callback) {
|
|||||||
console.log('Termination signal received. Shutting down.');
|
console.log('Termination signal received. Shutting down.');
|
||||||
destroyAliveConnections();
|
destroyAliveConnections();
|
||||||
server.close();
|
server.close();
|
||||||
|
parseServer.handleShutdown();
|
||||||
};
|
};
|
||||||
process.on('SIGTERM', handleShutdown);
|
process.on('SIGTERM', handleShutdown);
|
||||||
process.on('SIGINT', handleShutdown);
|
process.on('SIGINT', handleShutdown);
|
||||||
|
|||||||
Reference in New Issue
Block a user