mirror of https://github.com/go-redis/redis.git
Attempt to Close Sentinel when the cluster is Closed.
This commit is contained in:
parent
6833d2f8e1
commit
7462713440
|
@ -62,6 +62,8 @@ type ClusterOptions struct {
|
||||||
|
|
||||||
OnConnect func(ctx context.Context, cn *Conn) error
|
OnConnect func(ctx context.Context, cn *Conn) error
|
||||||
|
|
||||||
|
OnClose func() error
|
||||||
|
|
||||||
Protocol int
|
Protocol int
|
||||||
Username string
|
Username string
|
||||||
Password string
|
Password string
|
||||||
|
@ -868,7 +870,6 @@ func NewClusterClient(opt *ClusterOptions) *ClusterClient {
|
||||||
c.state = newClusterStateHolder(c.loadState)
|
c.state = newClusterStateHolder(c.loadState)
|
||||||
c.cmdsInfoCache = newCmdsInfoCache(c.cmdsInfo)
|
c.cmdsInfoCache = newCmdsInfoCache(c.cmdsInfo)
|
||||||
c.cmdable = c.Process
|
c.cmdable = c.Process
|
||||||
|
|
||||||
c.initHooks(hooks{
|
c.initHooks(hooks{
|
||||||
dial: nil,
|
dial: nil,
|
||||||
process: c.process,
|
process: c.process,
|
||||||
|
@ -895,7 +896,11 @@ func (c *ClusterClient) ReloadState(ctx context.Context) {
|
||||||
// It is rare to Close a ClusterClient, as the ClusterClient is meant
|
// It is rare to Close a ClusterClient, as the ClusterClient is meant
|
||||||
// to be long-lived and shared between many goroutines.
|
// to be long-lived and shared between many goroutines.
|
||||||
func (c *ClusterClient) Close() error {
|
func (c *ClusterClient) Close() error {
|
||||||
return c.nodes.Close()
|
err := c.nodes.Close()
|
||||||
|
if c.opt.OnClose != nil && err == nil {
|
||||||
|
err = c.opt.OnClose()
|
||||||
|
}
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do create a Cmd from the args and processes the cmd.
|
// Do create a Cmd from the args and processes the cmd.
|
||||||
|
|
|
@ -825,7 +825,7 @@ func NewFailoverClusterClient(failoverOpt *FailoverOptions) *ClusterClient {
|
||||||
}
|
}
|
||||||
return slots, nil
|
return slots, nil
|
||||||
}
|
}
|
||||||
|
opt.OnClose = failover.Close
|
||||||
c := NewClusterClient(opt)
|
c := NewClusterClient(opt)
|
||||||
|
|
||||||
failover.mu.Lock()
|
failover.mu.Lock()
|
||||||
|
|
Loading…
Reference in New Issue