From d6532c63f8458a91b3f32e4f0d065e405c4a3872 Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 19 Nov 2014 11:09:42 +0000 Subject: [PATCH] Use new robust subscription model --- .../coffee/Features/Editor/EditorRealTimeController.coffee | 6 ++++-- .../coffee/Features/Editor/EditorUpdatesController.coffee | 7 +++++-- .../coffee/Editor/EditorRealTimeControllerTests.coffee | 2 ++ .../coffee/Editor/EditorUpdatesControllerTests.coffee | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/services/web/app/coffee/Features/Editor/EditorRealTimeController.coffee b/services/web/app/coffee/Features/Editor/EditorRealTimeController.coffee index 76f4f909c1..924b8c66c6 100644 --- a/services/web/app/coffee/Features/Editor/EditorRealTimeController.coffee +++ b/services/web/app/coffee/Features/Editor/EditorRealTimeController.coffee @@ -1,7 +1,7 @@ Settings = require 'settings-sharelatex' redis = require("redis-sharelatex") rclientPub = redis.createClient(Settings.redis.web) -rclientSub = redis.createClient(Settings.redis.web) +rclientSub = redis.createRobustSubscriptionClient(Settings.redis.web) module.exports = EditorRealTimeController = rclientPub: rclientPub @@ -18,7 +18,9 @@ module.exports = EditorRealTimeController = listenForEditorEvents: () -> @rclientSub.subscribe "editor-events" - @rclientSub.on "message", @_processEditorEvent.bind(@) + @rclientSub.on "message", (channel, message) -> + return unless channel == "editor-events" + EditorRealTimeController._processEditorEvent(channel, message) _processEditorEvent: (channel, message) -> io = require('../../infrastructure/Server').io diff --git a/services/web/app/coffee/Features/Editor/EditorUpdatesController.coffee b/services/web/app/coffee/Features/Editor/EditorUpdatesController.coffee index 0233c67aaa..f626a7a3ca 100644 --- a/services/web/app/coffee/Features/Editor/EditorUpdatesController.coffee +++ b/services/web/app/coffee/Features/Editor/EditorUpdatesController.coffee @@ -2,10 +2,11 @@ logger = require "logger-sharelatex" metrics = require('../../infrastructure/Metrics') Settings = require 'settings-sharelatex' redis = require("redis-sharelatex") -rclient = redis.createClient(Settings.redis.web) DocumentUpdaterHandler = require('../DocumentUpdater/DocumentUpdaterHandler') EditorRealTimeController = require("./EditorRealTimeController") +rclient = redis.createRobustSubscriptionClient(Settings.redis.web) + module.exports = EditorUpdatesController = _applyUpdate: (client, project_id, doc_id, update, callback = (error) ->) -> metrics.inc "editor.doc-update", 0.3 @@ -30,7 +31,9 @@ module.exports = EditorUpdatesController = listenForUpdatesFromDocumentUpdater: () -> rclient.subscribe "applied-ops" - rclient.on "message", @_processMessageFromDocumentUpdater.bind(@) + rclient.on "message", (channel, message) -> + return unless channel == "applied-ops" + EditorUpdatesController._processMessageFromDocumentUpdater(channel, message) _processMessageFromDocumentUpdater: (channel, message) -> message = JSON.parse message diff --git a/services/web/test/UnitTests/coffee/Editor/EditorRealTimeControllerTests.coffee b/services/web/test/UnitTests/coffee/Editor/EditorRealTimeControllerTests.coffee index 9bb1fb3a04..80b5800758 100644 --- a/services/web/test/UnitTests/coffee/Editor/EditorRealTimeControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Editor/EditorRealTimeControllerTests.coffee @@ -9,6 +9,8 @@ describe "EditorRealTimeController", -> "redis-sharelatex": createClient: () -> auth:-> + createRobustSubscriptionClient: () -> + auth:-> "../../infrastructure/Server" : io: @io = {} @EditorRealTimeController.rclientPub = publish: sinon.stub() @EditorRealTimeController.rclientSub = diff --git a/services/web/test/UnitTests/coffee/Editor/EditorUpdatesControllerTests.coffee b/services/web/test/UnitTests/coffee/Editor/EditorUpdatesControllerTests.coffee index 74d6807bb5..ba39e921f1 100644 --- a/services/web/test/UnitTests/coffee/Editor/EditorUpdatesControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Editor/EditorUpdatesControllerTests.coffee @@ -18,7 +18,7 @@ describe "EditorUpdatesController", -> "../../infrastructure/Metrics" : @metrics = { set: sinon.stub(), inc: sinon.stub() } "../../infrastructure/Server" : io: @io = {} "redis-sharelatex" : - createClient: ()=> + createRobustSubscriptionClient: ()=> @rclient = {auth:->} describe "_applyUpdate", ->