mirror of
https://github.com/redis/go-redis.git
synced 2025-07-29 17:41:15 +03:00
feat: enable real push notification processors for SentinelClient and FailoverClient
- Add PushNotifications field to FailoverOptions struct - Update clientOptions() to pass PushNotifications field to Options - Change SentinelClient and FailoverClient initialization to use same logic as regular Client - Both clients now support real push notification processors when enabled - Both clients use void processors only when explicitly disabled - Consistent behavior across all client types (Client, SentinelClient, FailoverClient) Benefits: - SentinelClient and FailoverClient can now fully utilize push notifications - Consistent API across all client types - Real processors when push notifications are enabled - Void processors only when explicitly disabled - Equal push notification capabilities for all Redis client types
This commit is contained in:
15
sentinel.go
15
sentinel.go
@ -61,6 +61,10 @@ type FailoverOptions struct {
|
|||||||
Protocol int
|
Protocol int
|
||||||
Username string
|
Username string
|
||||||
Password string
|
Password string
|
||||||
|
|
||||||
|
// PushNotifications enables push notifications for RESP3.
|
||||||
|
// Defaults to true for RESP3 connections.
|
||||||
|
PushNotifications bool
|
||||||
// CredentialsProvider allows the username and password to be updated
|
// CredentialsProvider allows the username and password to be updated
|
||||||
// before reconnecting. It should return the current username and password.
|
// before reconnecting. It should return the current username and password.
|
||||||
CredentialsProvider func() (username string, password string)
|
CredentialsProvider func() (username string, password string)
|
||||||
@ -129,6 +133,7 @@ func (opt *FailoverOptions) clientOptions() *Options {
|
|||||||
Protocol: opt.Protocol,
|
Protocol: opt.Protocol,
|
||||||
Username: opt.Username,
|
Username: opt.Username,
|
||||||
Password: opt.Password,
|
Password: opt.Password,
|
||||||
|
PushNotifications: opt.PushNotifications,
|
||||||
CredentialsProvider: opt.CredentialsProvider,
|
CredentialsProvider: opt.CredentialsProvider,
|
||||||
CredentialsProviderContext: opt.CredentialsProviderContext,
|
CredentialsProviderContext: opt.CredentialsProviderContext,
|
||||||
StreamingCredentialsProvider: opt.StreamingCredentialsProvider,
|
StreamingCredentialsProvider: opt.StreamingCredentialsProvider,
|
||||||
@ -426,11 +431,12 @@ func NewFailoverClient(failoverOpt *FailoverOptions) *Client {
|
|||||||
}
|
}
|
||||||
rdb.init()
|
rdb.init()
|
||||||
|
|
||||||
// Initialize push notification processor to prevent nil pointer dereference
|
// Initialize push notification processor similar to regular client
|
||||||
if opt.PushNotificationProcessor != nil {
|
if opt.PushNotificationProcessor != nil {
|
||||||
rdb.pushProcessor = opt.PushNotificationProcessor
|
rdb.pushProcessor = opt.PushNotificationProcessor
|
||||||
|
} else if opt.PushNotifications {
|
||||||
|
rdb.pushProcessor = NewPushNotificationProcessor()
|
||||||
} else {
|
} else {
|
||||||
// Create void processor for failover client (typically doesn't need push notifications)
|
|
||||||
rdb.pushProcessor = NewVoidPushNotificationProcessor()
|
rdb.pushProcessor = NewVoidPushNotificationProcessor()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -500,11 +506,12 @@ func NewSentinelClient(opt *Options) *SentinelClient {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize push notification processor to prevent nil pointer dereference
|
// Initialize push notification processor similar to regular client
|
||||||
if opt.PushNotificationProcessor != nil {
|
if opt.PushNotificationProcessor != nil {
|
||||||
c.pushProcessor = opt.PushNotificationProcessor
|
c.pushProcessor = opt.PushNotificationProcessor
|
||||||
|
} else if opt.PushNotifications {
|
||||||
|
c.pushProcessor = NewPushNotificationProcessor()
|
||||||
} else {
|
} else {
|
||||||
// Create void processor for Sentinel (typically doesn't need push notifications)
|
|
||||||
c.pushProcessor = NewVoidPushNotificationProcessor()
|
c.pushProcessor = NewVoidPushNotificationProcessor()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user