Rely on heartbeat to notify appstore on restart

This commit is contained in:
Johannes Zellner
2014-09-08 08:13:22 -07:00
parent d0c50e9580
commit 882645afcf
2 changed files with 14 additions and 19 deletions
+13 -18
View File
@@ -32,7 +32,7 @@ var express = require('express'),
exports = module.exports = Server;
var HEARTBEAT_INTERVAL = 1000 * 60 * 60;
var HEARTBEAT_INTERVAL = 1000 * 60;// * 60;
var RELOAD_NGINX_CMD = 'sudo ' + path.join(__dirname, 'scripts/reloadnginx.sh');
var RESTORE_CMD = 'sudo ' + path.join(__dirname, 'scripts/restore.sh');
var REBOOT_CMD = 'sudo ' + path.join(__dirname, 'scripts/reboot.sh');
@@ -524,6 +524,13 @@ Server.prototype._getCertificate = function (callback) {
};
Server.prototype._announce = function () {
if (config.token) {
debug('_announce: we already have a token. Skip announcing.');
clearTimeout(this._announceTimerId);
this._announceTimerId = null;
return;
}
var that = this;
var ANNOUNCE_INTERVAL = parseInt(process.env.ANNOUNCE_INTERVAL, 10) || 60000; // exported for testing
@@ -531,30 +538,18 @@ Server.prototype._announce = function () {
// On Digital Ocean, the only value which we can give a new droplet is the hostname.
// We use that value to identify the droplet by the appstore server when the droplet
// announce itself. This identifier can look different for other box providers.
var url = config.appServerUrl + '/api/v1/boxes/' + config.fqdn + '/announce';
var hostname = os.hostname();
var url = config.appServerUrl + '/api/v1/boxes/' + hostname + '/announce';
debug('_announce: box with %s.', url);
superagent.get(url).end(function (error, result) {
if (error || result.statusCode !== 200) {
debug('_announce: unable to announce to app server', error);
// The restart case will have a config.token so it is ok to not have a 200 status code in that case
if (error || !config.token) {
debug('_announce: try again');
that._announceTimerId = setTimeout(that._announce.bind(that), ANNOUNCE_INTERVAL); // try again
} else {
debug('_announce: don\'t try again, this was a reboot');
that._announceTimerId = null;
}
debug('_announce: unable to announce to app server, try again.', error);
that._announceTimerId = setTimeout(that._announce.bind(that), ANNOUNCE_INTERVAL); // try again
return;
}
if (!config.token) {
that._announceTimerId = setTimeout(that._announce.bind(that), ANNOUNCE_INTERVAL * 2); // check again if we got token
} else {
that._announceTimerId = null;
}
that._announceTimerId = setTimeout(that._announce.bind(that), ANNOUNCE_INTERVAL * 2);
debug('_announce: success');
});
+1 -1
View File
@@ -321,7 +321,7 @@ describe('Server', function () {
});
});
xdescribe('announce', function () {
describe('announce', function () {
var server, failingGet;
before(function (done) {