Reload configuration on SIGHUP

This commit is contained in:
Tim Schaub 2017-04-26 08:55:02 -06:00
parent c03b0a12f8
commit e88b786073
2 changed files with 33 additions and 8 deletions

View file

@ -19,8 +19,10 @@
"test": "mocha test/**.js"
},
"dependencies": {
"async": "2.2.0",
"@mapbox/mapbox-gl-native": "3.4.4",
"@mapbox/sphericalmercator": "1.0.5",
"advanced-pool": "0.3.2",
"async": "2.2.0",
"base64url": "2.0.0",
"canvas": "1.6.5",
"clone": "2.1.1",
@ -29,6 +31,7 @@
"express": "4.15.2",
"glyph-pbf-composite": "0.0.2",
"handlebars": "4.0.6",
"http-shutdown": "^1.2.0",
"mbtiles": "0.9.0",
"morgan": "1.8.1",
"node-pngquant-native": "1.0.4",
@ -38,9 +41,7 @@
"request": "2.81.0",
"sharp": "0.17.2",
"tileserver-gl-styles": "1.1.1",
"vector-tile": "1.3.0",
"@mapbox/mapbox-gl-native": "3.4.4",
"@mapbox/sphericalmercator": "1.0.5"
"vector-tile": "1.3.0"
},
"devDependencies": {
"should": "^11.2.0",

View file

@ -10,6 +10,7 @@ var fs = require('fs'),
var base64url = require('base64url'),
clone = require('clone'),
cors = require('cors'),
enableShutdown = require('http-shutdown'),
express = require('express'),
handlebars = require('handlebars'),
mercator = new (require('@mapbox/sphericalmercator'))(),
@ -28,7 +29,7 @@ if (!isLight) {
serve_rendered = require('./serve_rendered');
}
module.exports = function(opts) {
function start(opts) {
console.log('Starting server');
var app = express().disable('x-powered-by'),
@ -359,12 +360,35 @@ module.exports = function(opts) {
this.address().address, this.address().port);
});
process.on('SIGINT', function() {
process.exit();
});
// add server.shutdown() to gracefully stop serving
enableShutdown(server);
return {
app: app,
server: server
};
}
module.exports = function(opts) {
var running = start(opts);
process.on('SIGINT', function() {
process.exit();
});
process.on('SIGHUP', function() {
console.log('Stopping server and reloading config');
running.server.shutdown(function() {
for (var key in require.cache) {
delete require.cache[key];
}
var restarted = start(opts);
running.server = restarted.server;
running.app = restarted.app;
});
});
return running;
};