Cleanup sentinel pubsub on close

Currently, the pubsub connection is aggressively disconnected when we close the upstream client which causes it to log something like:

redis: 2018/11/09 09:10:07 pubsub.go:151: redis: discarding bad PubSub connection: read tcp 127.0.0.1:61025->127.0.0.1:26378: use of closed network connection

This change simply cleans up the connection on close.  

We create new redis servers and connections for each set of independent tests and the logs were getting spammy.
This commit is contained in:
Jason Parrott 2018-11-09 09:32:22 -05:00 committed by GitHub
parent 58f22c56fd
commit 7fa8fdf3e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 4 deletions

View File

@ -176,6 +176,7 @@ type sentinelFailover struct {
masterName string
_masterAddr string
sentinel *SentinelClient
pubsub *PubSub
}
func (c *sentinelFailover) Close() error {
@ -308,6 +309,9 @@ func (c *sentinelFailover) setSentinel(sentinel *SentinelClient) {
}
func (c *sentinelFailover) closeSentinel() error {
if err := c.pubsub.Close(); err != nil {
return err
}
err := c.sentinel.Close()
c.sentinel = nil
return err
@ -336,10 +340,8 @@ func (c *sentinelFailover) discoverSentinels(sentinel *SentinelClient) {
}
func (c *sentinelFailover) listen(sentinel *SentinelClient) {
pubsub := sentinel.Subscribe("+switch-master")
defer pubsub.Close()
ch := pubsub.Channel()
c.pubsub = sentinel.Subscribe("+switch-master")
ch := c.pubsub.Channel()
for {
msg, ok := <-ch
if !ok {