-
Notifications
You must be signed in to change notification settings - Fork 4
/
server.js
53 lines (46 loc) · 1.61 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
var recluster = require('recluster');
var path = require('path');
var fs = require('fs');
var request = require('request');
var url = require('url');
var logger = require('./lib/util/logger');
var environment = require('./lib/util/environment');
var config = require('./lib/util/config');
var quotes = require('./lib/util/quotes');
var surveyUrl = url.format({
protocol: 'http',
hostname: config.server.host,
port: config.server.port,
pathname: '/api/survey'
});
var cluster = recluster('app.js', { workers: config.server.workers });
cluster.run();
if (config.survey.frequency) {
setTimeout(function() {
(function scheduleSurvey() {
requestSurvey();
setTimeout(scheduleSurvey, config.survey.frequency);
})();
}, 10000);
};
function requestSurvey() {
request.post(surveyUrl, function(err, response) {
if (err) return logger.error('Error triggering survey: %s', err.message);
if (response.statusCode != 202) return logger.error('Error triggering survey: %s', response.statusCode);
});
}
process.on('SIGUSR2', function() {
logger.warn('Reloading cluster');
cluster.reload();
});
cluster.on('exit', function(worker) {
logger.warn('RepoCop %s exited.', worker.workerID);
logger.warn(quotes.shutdown());
})
var started = 0;
cluster.on('message', function(worker, message) {
if (message.type === 'started') {
logger.info('RepoCop %s is listening on %s:%s in %s', worker.workerID, config.server.host, config.server.port, environment);
if (++started >= config.server.workers) logger.info(quotes.startup());
}
})