make redis client list dynamic based on settings

This commit is contained in:
Brian Gough 2019-07-09 11:45:00 +01:00
parent b5f9bc422b
commit cb289f2dec
3 changed files with 12 additions and 5 deletions

View file

@ -1,6 +1,6 @@
logger = require "logger-sharelatex"
settings = require 'settings-sharelatex'
redis = require("redis-sharelatex")
RedisClientManager = require "./RedisClientManager"
SafeJsonParse = require "./SafeJsonParse"
EventLogger = require "./EventLogger"
HealthCheckManager = require "./HealthCheckManager"
@ -11,7 +11,7 @@ MESSAGE_SIZE_LOG_LIMIT = 1024 * 1024 # 1Mb
module.exports = DocumentUpdaterController =
# DocumentUpdaterController is responsible for updates that come via Redis
# Pub/Sub from the document updater.
rclientList: [redis.createClient(settings.redis.pubsub)]
rclientList: RedisClientManager.createClientList(settings.redis.pubsub, settings.redis.unusedpubsub)
listenForUpdatesFromDocumentUpdater: (io) ->
for rclient in @rclientList

View file

@ -0,0 +1,7 @@
redis = require("redis-sharelatex")
modules.export = RedisClientManager =
createClientList: (configs...)
# create a dynamic list of redis clients, excluding any configurations which are not defined
clientList = (redis.createClient(x) for x in configs when x?))
return clientList

View file

@ -1,13 +1,13 @@
Settings = require 'settings-sharelatex'
logger = require 'logger-sharelatex'
redis = require("redis-sharelatex")
RedisClientManager = require "./RedisClientManager"
SafeJsonParse = require "./SafeJsonParse"
EventLogger = require "./EventLogger"
HealthCheckManager = require "./HealthCheckManager"
module.exports = WebsocketLoadBalancer =
rclientPubList: [redis.createClient(Settings.redis.pubsub)]
rclientSubList: [redis.createClient(Settings.redis.pubsub)]
rclientPubList: RedisClientManager.createClientList(Settings.redis.pubsub, Settings.redis.unusedpubsub)
rclientSubList: RedisClientManager.createClientList(Settings.redis.pubsub, Settings.redis.unusedpubsub)
emitToRoom: (room_id, message, payload...) ->
if !room_id?