in provider/lib/utils.js [465:513]
this.initRedis = function() {
var method = 'initRedis';
return new Promise(function(resolve, reject) {
if (redisClient) {
var subscriber = redisClient.duplicate();
//create a subscriber client that listens for requests to perform swap
subscriber.on('message', function (channel, message) {
logger.info(method, message, 'set to active host in channel', channel);
self.activeHost = message;
});
subscriber.on('error', function (err) {
logger.error(method, 'Error connecting to redis', err);
reject(err);
});
subscriber.subscribe(self.redisKey);
redisClient.hgetAsync(self.redisKey, self.redisField)
.then(activeHost => {
return initActiveHost(activeHost);
})
.then(() => {
process.on('SIGTERM', function onSigterm() {
if (self.activeHost === self.host) {
var redundantHost = self.host === `${self.hostPrefix}0` ? `${self.hostPrefix}1` : `${self.hostPrefix}0`;
self.redisClient.hsetAsync(self.redisKey, self.redisField, redundantHost)
.then(() => {
self.redisClient.publish(self.redisKey, redundantHost);
})
.catch(err => {
logger.error(method, err);
});
}
});
resolve();
})
.catch(err => {
reject(err);
});
}
else {
resolve();
}
});
};