From c9ccf62d714912fb3f53de46106a51620cce3e49 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Mon, 22 Jul 2019 12:20:06 +0100 Subject: [PATCH 1/2] support per-doc pubsub channels --- .../app/coffee/RealTimeRedisManager.coffee | 7 ++++++- services/document-updater/config/settings.defaults.coffee | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/services/document-updater/app/coffee/RealTimeRedisManager.coffee b/services/document-updater/app/coffee/RealTimeRedisManager.coffee index e949268f62..d6a4fc5044 100644 --- a/services/document-updater/app/coffee/RealTimeRedisManager.coffee +++ b/services/document-updater/app/coffee/RealTimeRedisManager.coffee @@ -36,4 +36,9 @@ module.exports = RealTimeRedisManager = # create a unique message id using a counter message_id = "doc:#{HOST}:#{RND}-#{COUNT++}" data?._id = message_id - pubsubClient.publish "applied-ops", JSON.stringify(data) + # publish on separate channels for individual projects and docs when + # configured (needs realtime to be configured for this too). + if Settings.publishOnIndividualChannels and data.doc_id? + pubsubClient.publish "applied-ops:#{data.doc_id}", JSON.stringify(data) + else + pubsubClient.publish "applied-ops", JSON.stringify(data) diff --git a/services/document-updater/config/settings.defaults.coffee b/services/document-updater/config/settings.defaults.coffee index f359ab38f0..547866599d 100755 --- a/services/document-updater/config/settings.defaults.coffee +++ b/services/document-updater/config/settings.defaults.coffee @@ -91,4 +91,6 @@ module.exports = url: "mongodb://#{process.env["MONGO_HOST"] or "localhost"}/sharelatex" sentry: - dsn: process.env.SENTRY_DSN \ No newline at end of file + dsn: process.env.SENTRY_DSN + + publishOnIndividualChannels: process.env['PUBLISH_ON_INDIVIDUAL_CHANNELS'] or false From 618880f99d804f522ce4944e720c887d8e7bf4b3 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Wed, 24 Jul 2019 16:57:43 +0100 Subject: [PATCH 2/2] remove unnecessary check for doc_id --- .../document-updater/app/coffee/RealTimeRedisManager.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/document-updater/app/coffee/RealTimeRedisManager.coffee b/services/document-updater/app/coffee/RealTimeRedisManager.coffee index d6a4fc5044..d04f2304d3 100644 --- a/services/document-updater/app/coffee/RealTimeRedisManager.coffee +++ b/services/document-updater/app/coffee/RealTimeRedisManager.coffee @@ -38,7 +38,7 @@ module.exports = RealTimeRedisManager = data?._id = message_id # publish on separate channels for individual projects and docs when # configured (needs realtime to be configured for this too). - if Settings.publishOnIndividualChannels and data.doc_id? + if Settings.publishOnIndividualChannels pubsubClient.publish "applied-ops:#{data.doc_id}", JSON.stringify(data) else pubsubClient.publish "applied-ops", JSON.stringify(data)