mirror of
https://github.com/overleaf/overleaf.git
synced 2025-02-16 21:01:20 +00:00
Merge pull request #59 from overleaf/ho-redis-natmap-sentinel
Move pubsub to seperate connection
This commit is contained in:
commit
eadef7b133
4 changed files with 21 additions and 9 deletions
|
@ -2,6 +2,7 @@ Metrics = require("metrics-sharelatex")
|
|||
Settings = require "settings-sharelatex"
|
||||
Metrics.initialize(Settings.appName or "real-time")
|
||||
async = require("async")
|
||||
_ = require "underscore"
|
||||
|
||||
logger = require "logger-sharelatex"
|
||||
logger.initialize("real-time")
|
||||
|
@ -60,6 +61,7 @@ app.get "/debug/events", (req, res, next) ->
|
|||
res.send "debug mode will log next #{Settings.debugEvents} events"
|
||||
|
||||
rclient = require("redis-sharelatex").createClient(Settings.redis.realtime)
|
||||
|
||||
app.get "/health_check/redis", (req, res, next) ->
|
||||
rclient.healthCheck (error) ->
|
||||
if error?
|
||||
|
@ -132,16 +134,20 @@ if Settings.forceDrainMsDelay?
|
|||
if Settings.continualPubsubTraffic
|
||||
console.log "continualPubsubTraffic enabled"
|
||||
|
||||
pubSubClient = redis.createClient(Settings.redis.documentupdater)
|
||||
redisClients = [redis.createClient(Settings.redis.documentupdater), redis.createClient(Settings.redis.realtime)]
|
||||
|
||||
publishJob = (channel, cb)->
|
||||
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()})
|
||||
pubSubClient.publish channel, json, (err)->
|
||||
if err?
|
||||
logger.err {err, channel}, "error publishing pubsub traffic to redis"
|
||||
cb(err)
|
||||
jobs = _.map redisClients, (rclient)->
|
||||
return (cb)->
|
||||
rclient.publish channel, json, (err)->
|
||||
if err?
|
||||
logger.err {err, channel}, "error publishing pubsub traffic to redis"
|
||||
return cb(err)
|
||||
|
||||
async.series jobs, callback
|
||||
|
||||
runPubSubTraffic = ->
|
||||
async.map ["applied-ops", "editor-events"], publishJob, (err)->
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
logger = require "logger-sharelatex"
|
||||
settings = require 'settings-sharelatex'
|
||||
redis = require("redis-sharelatex")
|
||||
rclient = redis.createClient(settings.redis.documentupdater)
|
||||
rclient = redis.createClient(settings.redis.pubsub)
|
||||
SafeJsonParse = require "./SafeJsonParse"
|
||||
EventLogger = require "./EventLogger"
|
||||
HealthCheckManager = require "./HealthCheckManager"
|
||||
|
|
|
@ -2,8 +2,8 @@ Settings = require 'settings-sharelatex'
|
|||
logger = require 'logger-sharelatex'
|
||||
redis = require("redis-sharelatex")
|
||||
SafeJsonParse = require "./SafeJsonParse"
|
||||
rclientPub = redis.createClient(Settings.redis.realtime)
|
||||
rclientSub = redis.createClient(Settings.redis.realtime)
|
||||
rclientPub = redis.createClient(Settings.redis.pubsub)
|
||||
rclientSub = redis.createClient(Settings.redis.pubsub)
|
||||
EventLogger = require "./EventLogger"
|
||||
HealthCheckManager = require "./HealthCheckManager"
|
||||
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
settings =
|
||||
redis:
|
||||
|
||||
pubsub:
|
||||
host: process.env['PUBSUB_REDIS_HOST'] or process.env['REDIS_HOST'] or "localhost"
|
||||
port: process.env['PUBSUB_REDIS_PORT'] or process.env['REDIS_PORT'] or "6379"
|
||||
password: process.env["PUBSUB_REDIS_PASSWORD"] or process.env["REDIS_PASSWORD"] or ""
|
||||
|
||||
realtime:
|
||||
host: process.env['REAL_TIME_REDIS_HOST'] or process.env['REDIS_HOST'] or "localhost"
|
||||
port: process.env['REAL_TIME_REDIS_PORT'] or process.env['REDIS_PORT'] or "6379"
|
||||
|
|
Loading…
Reference in a new issue