From cb289f2decfe240ef89b080d4c09bc6e926360f8 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Tue, 9 Jul 2019 11:45:00 +0100 Subject: [PATCH] make redis client list dynamic based on settings --- .../real-time/app/coffee/DocumentUpdaterController.coffee | 4 ++-- services/real-time/app/coffee/RedisClientManager.coffee | 7 +++++++ services/real-time/app/coffee/WebsocketLoadBalancer.coffee | 6 +++--- 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 services/real-time/app/coffee/RedisClientManager.coffee 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?