From dd3c923f4406085d36a8efb7299202a8133e0fd5 Mon Sep 17 00:00:00 2001 From: bahtya Date: Thu, 9 Apr 2026 18:15:48 +0800 Subject: [PATCH] fix: close pubsub connection on Subscribe error in CancelationPubSub When redis.Subscribe succeeds but Receive() fails, the pubsub connection was not being closed before returning the error. This caused the subscriber goroutine to leak a Redis connection on each retry iteration, eventually exhausting the connection pool. Fixes #1095 --- internal/rdb/rdb.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/rdb/rdb.go b/internal/rdb/rdb.go index 22df506..ae680ef 100644 --- a/internal/rdb/rdb.go +++ b/internal/rdb/rdb.go @@ -1488,6 +1488,7 @@ func (r *RDB) CancelationPubSub() (*redis.PubSub, error) { pubsub := r.client.Subscribe(ctx, base.CancelChannel) _, err := pubsub.Receive(ctx) if err != nil { + pubsub.Close() return nil, errors.E(op, errors.Unknown, fmt.Sprintf("redis pubsub receive error: %v", err)) } return pubsub, nil