kibana-riya
Version:
Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic
69 lines (48 loc) • 1.73 kB
JavaScript
;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _boom = require('boom');
var _boom2 = _interopRequireDefault(_boom);
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
var _fs = require('fs');
var writeFile = _bluebird2['default'].promisify(require('fs').writeFile);
module.exports = _bluebird2['default'].method(function (kbnServer, server, config) {
var path = config.get('pid.file');
if (!path) return;
var pid = String(process.pid);
return writeFile(path, pid, { flag: 'wx' })['catch'](function (err) {
if (err.code !== 'EEXIST') throw err;
var log = {
tmpl: 'pid file already exists at <%= path %>',
path: path,
pid: pid
};
if (config.get('pid.exclusive')) {
throw _boom2['default'].create(500, _lodash2['default'].template(log.tmpl)(log), log);
} else {
server.log(['pid', 'warning'], log);
}
return writeFile(path, pid);
}).then(function () {
server.log(['pid', 'debug'], {
tmpl: 'wrote pid file to <%= path %>',
path: path,
pid: pid
});
var clean = _lodash2['default'].once(function (code) {
(0, _fs.unlinkSync)(path);
});
process.once('exit', clean); // for "natural" exits
process.once('SIGINT', function () {
// for Ctrl-C exits
clean();
// resend SIGINT
process.kill(process.pid, 'SIGINT');
});
process.on('unhandledRejection', function (reason, promise) {
server.log(['warning'], 'Detected an unhandled Promise rejection.\n' + reason);
});
});
});