mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-21 16:06:16 -04:00

* `src/node/server.js` can now be run as a script (for normal operation) or imported as a module (for tests). * Move shutdown actions to `src/node/server.js` to be close to the startup actions. * Put startup and shutdown in functions so that tests can call them. * Use `await` instead of callbacks. * Block until the HTTP server is listening to avoid races during test startup. * Add a new `shutdown` hook. * Use the `shutdown` hook to: * close the HTTP server * call `end()` on the stats collection to cancel its timers * call `terminate()` on the Threads.Pool to stop the workers * Exit with exit code 0 (instead of 1) on SIGTERM. * Export the HTTP server so that tests can get the HTTP server's port via `server.address().port` when `settings.port` is 0.
15 lines
528 B
JavaScript
15 lines
528 B
JavaScript
var stats = require('ep_etherpad-lite/node/stats')
|
|
|
|
exports.expressCreateServer = function (hook_name, args, cb) {
|
|
exports.app = args.app;
|
|
|
|
// Handle errors
|
|
args.app.use(function(err, req, res, next) {
|
|
// if an error occurs Connect will pass it down
|
|
// through these "error-handling" middleware
|
|
// allowing you to respond however you like
|
|
res.status(500).send({ error: 'Sorry, something bad happened!' });
|
|
console.error(err.stack? err.stack : err.toString());
|
|
stats.meter('http500').mark()
|
|
});
|
|
}
|