simplify redis continual traffic

we can't send double health check events to same redis, it causes
health check duplicate errors. Commit just sends health check data to
pub sub pair and then sends non health check traffic to cluster to keep
the connection open
This commit is contained in:
Henry Oswald 2019-07-08 12:07:28 +01:00
parent 1038c5cd0d
commit 520857cf7a

View file

@ -134,20 +134,18 @@ if Settings.forceDrainMsDelay?
if Settings.continualPubsubTraffic
console.log "continualPubsubTraffic enabled"
redisClients = [redis.createClient(Settings.redis.documentupdater), redis.createClient(Settings.redis.pubsub)]
pubsubClient = redis.createClient(Settings.redis.pubsub)
clusterClient = redis.createClient(Settings.redis.websessions)
publishJob = (channel, callback)->
checker = new HealthCheckManager(channel)
logger.debug {channel:channel}, "sending pub to keep connection alive"
json = JSON.stringify({health_check:true, key: checker.id, date: new Date().toString()})
jobs = _.map redisClients, (checkRclient)->
return (cb)->
checkRclient.publish channel, json, (err)->
pubsubClient.publish channel, json, (err)->
if err?
logger.err {err, channel}, "error publishing pubsub traffic to redis"
return cb(err)
clusterClient.publish "cluster-continual-traffic", {keep: "alive"}, callback
async.series jobs, callback
runPubSubTraffic = ->
async.map ["applied-ops", "editor-events"], publishJob, (err)->