diff --git a/services/real-time/app/coffee/DocumentUpdaterController.coffee b/services/real-time/app/coffee/DocumentUpdaterController.coffee index 41e3bb571a..0c89c7dd06 100644 --- a/services/real-time/app/coffee/DocumentUpdaterController.coffee +++ b/services/real-time/app/coffee/DocumentUpdaterController.coffee @@ -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 diff --git a/services/real-time/app/coffee/RedisClientManager.coffee b/services/real-time/app/coffee/RedisClientManager.coffee new file mode 100644 index 0000000000..32b10668f8 --- /dev/null +++ b/services/real-time/app/coffee/RedisClientManager.coffee @@ -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 \ No newline at end of file diff --git a/services/real-time/app/coffee/WebsocketLoadBalancer.coffee b/services/real-time/app/coffee/WebsocketLoadBalancer.coffee index 5c91cd9fa9..89fdc9a27a 100644 --- a/services/real-time/app/coffee/WebsocketLoadBalancer.coffee +++ b/services/real-time/app/coffee/WebsocketLoadBalancer.coffee @@ -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?