From cdf5d18f547f8c03a7d1a91624734571bad88dbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 26 Feb 2021 08:17:45 -0500 Subject: [PATCH] fix: don't publish before pubClient is connected --- src/database/redis/pubsub.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/database/redis/pubsub.js b/src/database/redis/pubsub.js index b61b266d67..a7d220682d 100644 --- a/src/database/redis/pubsub.js +++ b/src/database/redis/pubsub.js @@ -10,7 +10,7 @@ let channelName; const PubSub = function () { const self = this; channelName = `db:${nconf.get('redis:database')}:pubsub_channel`; - + self.queue = []; connection.connect().then((client) => { self.subClient = client; self.subClient.subscribe(channelName); @@ -30,13 +30,20 @@ const PubSub = function () { connection.connect().then((client) => { self.pubClient = client; + self.queue.forEach(payload => client.publish(channelName, payload)); + self.queue.length = 0; }); }; util.inherits(PubSub, EventEmitter); PubSub.prototype.publish = function (event, data) { - this.pubClient.publish(channelName, JSON.stringify({ event: event, data: data })); + const payload = JSON.stringify({ event: event, data: data }); + if (this.pubClient) { + this.pubClient.publish(channelName, payload); + } else { + this.queue.push(payload); + } }; module.exports = new PubSub();