You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When attempting to subscribe to Redis channels in a Redis Cluster environment, the client throws the following error:
Cluster issue for channel: general:{So11111111111111111111111111111111111111112}:{4yrHms7ekgTBgJg77zJ33TsWrraqHsCXDtuSZqUsuGHb}. This is a known issue with Redis Cluster Pub/Sub.
[Redis Subscribe - Cluster Issue] Error: TypeError: Cannot read properties of undefined (reading 'address')
at RedisClusterSlots._RedisClusterSlots_initiatePubSubClient (/Users/jdnichollsc/dev/print-world/print.lol-backend/node_modules/@redis/client/dist/lib/cluster/cluster-slots.js:392:23)
at RedisClusterSlots.getPubSubClient (/Users/jdnichollsc/dev/print-world/print.lol-backend/node_modules/@redis/client/dist/lib/cluster/cluster-slots.js:133:118)
at Commander.SUBSCRIBE (/Users/jdnichollsc/dev/print-world/print.lol-backend/node_modules/@redis/client/dist/lib/cluster/index.js:151:78)
at RedisPubSubManager.subscribe (/Users/jdnichollsc/dev/print-world/print.lol-backend/apis/ws-ui/src/RedisPubSubManager.ts:129:19)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at ChannelSubscriptionManager.handleChannelSubscription (/Users/jdnichollsc/dev/print-world/print.lol-backend/apis/ws-ui/src/ChannelSubscriptionManager.ts:119:9)
This error occurs in the RedisClusterSlots._RedisClusterSlots_initiatePubSubClient method when the client tries to create a dedicated Pub/Sub client for the cluster. The issue appears to be that the client is unable to properly initialize the Pub/Sub client for the cluster, possibly due to an undefined node reference.
Environment
Redis Server Version: 7.x (Cluster mode enabled)
Node Redis Version: 1.6.0
Node.js Version: v20.10.0
Platform: MacOS, Apple M2 Max
Steps to Reproduce
Set up a Redis Cluster with multiple nodes (in my case, nodes on ports 7100-7105)
Create a Redis client using the node-redis library and connect to the cluster
Attempt to subscribe to a channel using the subscribe method
The error occurs during the subscription process
Code Example
import{createCluster}from'redis';constredisClient=createCluster({rootNodes: [{url: 'redis://localhost:7100'},{url: 'redis://localhost:7101'},// ... other nodes]});// This works fineawaitredisClient.publish('trade:{So11111111111111111111111111111111111111112}:{4yrHms7ekgTBgJg77zJ33TsWrraqHsCXDtuSZqUsuGHb}',JSON.stringify({data: 'test'}));// This fails with the errorawaitredisClient.subscribe('trade:{So11111111111111111111111111111111111111112}:{4yrHms7ekgTBgJg77zJ33TsWrraqHsCXDtuSZqUsuGHb}',(message)=>{console.log(message);});
Expected Behavior
The client should successfully subscribe to the channel and receive messages published to it.
Actual Behavior
The client throws the error TypeError: Cannot read properties of undefined (reading 'address') when attempting to subscribe.
Additional Context
PUBLISH operations work correctly on the same channels
Using the Redis CLI directly to subscribe to these channels works without issues
The error specifically occurs in the cluster client's Pub/Sub initialization logic
This appears to be a bug in how the Redis Cluster client handles Pub/Sub subscriptions, possibly related to how it manages node connections for Pub/Sub operations.
The text was updated successfully, but these errors were encountered:
Are you certain that your cluster is configured correctly? The library doesn’t perform any preliminary checks to verify whether a node is set as cluster-enabled or that your cluster was set up correctly. To confirm if your configuration is being recognized, you can easily validate it by adding a breakpoint or a console log after line 390 in /@redis/client/dist/lib/cluster/cluster-slots.js to log the master and replica nodes. They shouldn't be empty.
Description
When attempting to subscribe to Redis channels in a Redis Cluster environment, the client throws the following error:
This error occurs in the
RedisClusterSlots._RedisClusterSlots_initiatePubSubClient
method when the client tries to create a dedicated Pub/Sub client for the cluster. The issue appears to be that the client is unable to properly initialize the Pub/Sub client for the cluster, possibly due to an undefined node reference.Environment
Steps to Reproduce
subscribe
methodCode Example
Expected Behavior
The client should successfully subscribe to the channel and receive messages published to it.
Actual Behavior
The client throws the error
TypeError: Cannot read properties of undefined (reading 'address')
when attempting to subscribe.Additional Context
This appears to be a bug in how the Redis Cluster client handles Pub/Sub subscriptions, possibly related to how it manages node connections for Pub/Sub operations.
The text was updated successfully, but these errors were encountered: