report errors from any mixin, and close the server when any occur
This commit is contained in:
parent
bbef901bf9
commit
bce10f8079
|
@ -127,7 +127,7 @@
|
|||
"grunt-jscs": "^1.8.0",
|
||||
"grunt-karma": "^0.12.0",
|
||||
"grunt-replace": "^0.7.9",
|
||||
"grunt-run": "^0.3.0",
|
||||
"grunt-run": "spalger/grunt-run#master",
|
||||
"grunt-s3": "^0.2.0-alpha.3",
|
||||
"grunt-simple-mocha": "^0.4.0",
|
||||
"html-entities": "^1.1.1",
|
||||
|
|
|
@ -84,6 +84,13 @@ module.exports = function (program) {
|
|||
|
||||
set('plugins.paths', [].concat(opts.pluginPath || []));
|
||||
|
||||
return new KbnServer(_.merge(settings, this.getUnknownOptions()));
|
||||
let server = new KbnServer(_.merge(settings, this.getUnknownOptions()));
|
||||
|
||||
server.ready().catch(function (err) {
|
||||
console.error(err.stack);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
return server;
|
||||
});
|
||||
};
|
||||
|
|
|
@ -77,6 +77,8 @@ module.exports = function (kbnServer, server, config) {
|
|||
plugins: kbnServer.plugins
|
||||
});
|
||||
|
||||
server.on('close', _.bindKey(optmzr.disable || _.noop, optmzr));
|
||||
|
||||
kbnServer.mixin(require('./browserTests'))
|
||||
.then(function () {
|
||||
|
||||
|
|
|
@ -60,6 +60,16 @@ module.exports = class KbnServer extends EventEmitter {
|
|||
.each(function (fn) {
|
||||
return fn.call(self, self, self.server, self.config);
|
||||
})
|
||||
.catch(function (err) {
|
||||
self.server.log('fatal', err);
|
||||
self.emit('error', err);
|
||||
|
||||
return self.close()
|
||||
.then(function () {
|
||||
// retrow once server is closed
|
||||
throw err;
|
||||
});
|
||||
})
|
||||
.return(undefined);
|
||||
}
|
||||
|
||||
|
@ -74,34 +84,24 @@ module.exports = class KbnServer extends EventEmitter {
|
|||
*/
|
||||
listen() {
|
||||
let self = this;
|
||||
let server = self.server;
|
||||
let start = _.ary(promify(server.start, server), 0);
|
||||
|
||||
return self.ready()
|
||||
.then(function () {
|
||||
return self.mixin(start, require('./pid'));
|
||||
return self.mixin(
|
||||
function () {
|
||||
return fromNode(_.bindKey(self.server, 'start'));
|
||||
},
|
||||
require('./pid')
|
||||
);
|
||||
})
|
||||
.then(
|
||||
function () {
|
||||
server.log(['listening', 'info'], 'Server running at ' + server.info.uri);
|
||||
self.emit('listening');
|
||||
return server;
|
||||
},
|
||||
function (err) {
|
||||
server.log('fatal', err);
|
||||
self.emit('error', err);
|
||||
}
|
||||
);
|
||||
.then(function () {
|
||||
self.server.log(['listening', 'info'], 'Server running at ' + self.server.info.uri);
|
||||
self.emit('listening');
|
||||
return self.server;
|
||||
});
|
||||
}
|
||||
|
||||
close() {
|
||||
let self = this;
|
||||
|
||||
return fromNode(function (cb) {
|
||||
self.server.stop(cb);
|
||||
})
|
||||
.then(function () {
|
||||
return _.get(self, 'optimizer.disable', _.noop)();
|
||||
});
|
||||
return fromNode(_.bindKey(this.server, 'stop'));
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue