Просмотр исходного кода

make redis client list dynamic based on settings

Brian Gough 7 лет назад
Родитель
Сommit
cb289f2dec

+ 2 - 2
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

+ 7 - 0
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

+ 3 - 3
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?