mirror of
https://github.com/overleaf/overleaf.git
synced 2024-09-16 02:52:31 -04: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"
|
Settings = require "settings-sharelatex"
|
||||||
Metrics.initialize(Settings.appName or "real-time")
|
Metrics.initialize(Settings.appName or "real-time")
|
||||||
async = require("async")
|
async = require("async")
|
||||||
|
_ = require "underscore"
|
||||||
|
|
||||||
logger = require "logger-sharelatex"
|
logger = require "logger-sharelatex"
|
||||||
logger.initialize("real-time")
|
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"
|
res.send "debug mode will log next #{Settings.debugEvents} events"
|
||||||
|
|
||||||
rclient = require("redis-sharelatex").createClient(Settings.redis.realtime)
|
rclient = require("redis-sharelatex").createClient(Settings.redis.realtime)
|
||||||
|
|
||||||
app.get "/health_check/redis", (req, res, next) ->
|
app.get "/health_check/redis", (req, res, next) ->
|
||||||
rclient.healthCheck (error) ->
|
rclient.healthCheck (error) ->
|
||||||
if error?
|
if error?
|
||||||
|
@ -132,16 +134,20 @@ if Settings.forceDrainMsDelay?
|
||||||
if Settings.continualPubsubTraffic
|
if Settings.continualPubsubTraffic
|
||||||
console.log "continualPubsubTraffic enabled"
|
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)
|
checker = new HealthCheckManager(channel)
|
||||||
logger.debug {channel:channel}, "sending pub to keep connection alive"
|
logger.debug {channel:channel}, "sending pub to keep connection alive"
|
||||||
json = JSON.stringify({health_check:true, key: checker.id, date: new Date().toString()})
|
json = JSON.stringify({health_check:true, key: checker.id, date: new Date().toString()})
|
||||||
pubSubClient.publish channel, json, (err)->
|
jobs = _.map redisClients, (rclient)->
|
||||||
|
return (cb)->
|
||||||
|
rclient.publish channel, json, (err)->
|
||||||
if err?
|
if err?
|
||||||
logger.err {err, channel}, "error publishing pubsub traffic to redis"
|
logger.err {err, channel}, "error publishing pubsub traffic to redis"
|
||||||
cb(err)
|
return cb(err)
|
||||||
|
|
||||||
|
async.series jobs, callback
|
||||||
|
|
||||||
runPubSubTraffic = ->
|
runPubSubTraffic = ->
|
||||||
async.map ["applied-ops", "editor-events"], publishJob, (err)->
|
async.map ["applied-ops", "editor-events"], publishJob, (err)->
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
logger = require "logger-sharelatex"
|
logger = require "logger-sharelatex"
|
||||||
settings = require 'settings-sharelatex'
|
settings = require 'settings-sharelatex'
|
||||||
redis = require("redis-sharelatex")
|
redis = require("redis-sharelatex")
|
||||||
rclient = redis.createClient(settings.redis.documentupdater)
|
rclient = redis.createClient(settings.redis.pubsub)
|
||||||
SafeJsonParse = require "./SafeJsonParse"
|
SafeJsonParse = require "./SafeJsonParse"
|
||||||
EventLogger = require "./EventLogger"
|
EventLogger = require "./EventLogger"
|
||||||
HealthCheckManager = require "./HealthCheckManager"
|
HealthCheckManager = require "./HealthCheckManager"
|
||||||
|
|
|
@ -2,8 +2,8 @@ Settings = require 'settings-sharelatex'
|
||||||
logger = require 'logger-sharelatex'
|
logger = require 'logger-sharelatex'
|
||||||
redis = require("redis-sharelatex")
|
redis = require("redis-sharelatex")
|
||||||
SafeJsonParse = require "./SafeJsonParse"
|
SafeJsonParse = require "./SafeJsonParse"
|
||||||
rclientPub = redis.createClient(Settings.redis.realtime)
|
rclientPub = redis.createClient(Settings.redis.pubsub)
|
||||||
rclientSub = redis.createClient(Settings.redis.realtime)
|
rclientSub = redis.createClient(Settings.redis.pubsub)
|
||||||
EventLogger = require "./EventLogger"
|
EventLogger = require "./EventLogger"
|
||||||
HealthCheckManager = require "./HealthCheckManager"
|
HealthCheckManager = require "./HealthCheckManager"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
settings =
|
settings =
|
||||||
redis:
|
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:
|
realtime:
|
||||||
host: process.env['REAL_TIME_REDIS_HOST'] or process.env['REDIS_HOST'] or "localhost"
|
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"
|
port: process.env['REAL_TIME_REDIS_PORT'] or process.env['REDIS_PORT'] or "6379"
|
||||||
|
|
Loading…
Reference in a new issue