Forráskód Böngészése

fix crash if redis disconnects (#3954)

https://github.com/redis/node-redis/issues/2032
Mikael Finstad 2 éve
szülő
commit
88b08e3843

+ 4 - 0
packages/@uppy/companion/src/server/emitter/redis-emitter.js

@@ -1,6 +1,8 @@
 const redis = require('redis')
 const { EventEmitter } = require('node:events')
 
+const logger = require('../logger')
+
 /**
  * This module simulates the builtin events.EventEmitter but with the use of redis.
  * This is useful for when companion is running on multiple instances and events need
@@ -10,10 +12,12 @@ module.exports = (redisUrl, redisPubSubScope) => {
   const prefix = redisPubSubScope ? `${redisPubSubScope}:` : ''
   const getPrefixedEventName = (eventName) => `${prefix}${eventName}`
   const publisher = redis.createClient({ url: redisUrl })
+  publisher.on('error', err => logger.error('publisher redis error', err))
   let subscriber
 
   const connectedPromise = publisher.connect().then(() => {
     subscriber = publisher.duplicate()
+    subscriber.on('error', err => logger.error('subscriber redis error', err))
     return subscriber.connect()
   })
 

+ 2 - 0
packages/@uppy/companion/src/server/redis.js

@@ -15,6 +15,8 @@ function createClient (opts) {
     // todo remove legacyMode when fixed: https://github.com/tj/connect-redis/issues/361
     redisClient = redis.createClient({ ...opts, legacyMode: true })
 
+    redisClient.on('error', err => logger.error('redis error', err))
+
     ;(async () => {
       try {
         // fire and forget.