Hi,
I see that the connect event is triggered multiple times on 4.0.0 version and apparently just once in 3.2.2
Can you confirm that this is the case ?
Thanks!
Could you post the code here that can reproduce the issue?
Sure, this code produces several connect events maybe 10% or 20% of the time on 4.0.0 ( tested a few dozen times ) and only one event on 3.2.0 ( same amount of tries ) :
"use strict"
const redis = require('ioredis')
const client = new redis.Cluster([{
"port": 6379,
"host": "xxxxxxxxxxx.cache.amazonaws.com"
},
{
"port": 6379,
"host": "xxxxxxxxxxx.cache.amazonaws.com"
}])
client.on('connect', () => {
console.log('Connect event')
})
I get multiple on 3.2, similar code as above, just logging on the connect event. Local server has no requests on it, yet will spit out "New Redis Connection" several times in a brief ten minute window.
Update, upgraded to 4.0.0 - and still am getting multiple (3 in about the same ten-minute window)
Have listeners 'close' and 'connect', and this is what I see:
[2] Closed Redis Connection
[2] New Redis Connection
[2] Closed Redis Connection
[2] New Redis Connection
So there is some TTL on the connection and it reestablishes?
@callsea1 Can you test if you get the "Connected", with lazyConnect true in the configuration and use the connect method manually like in the following. ( i had issue with this code _sometime_ not triggering connection, and this is why i started using the connect event )
"use strict"
const redis = require('ioredis')
const client = new redis.Cluster([{
"port": 6379,
"host": "xxxxxxxxxxxxxxxxx.cache.amazonaws.com"
}], { lazyConnect: true })
client.connect()
.then(() => console.log("Connected"))
@simondutertre I have moved on 馃槀 -- but not using a cluster, simply this:
import Redis from 'ioredis';
redisInstance = new Redis(REDIS_URL, options);
But I tried swapping in this package: https://www.npmjs.com/package/redis
And the same behavior existed, closing and re-establishing a connection. These are the two most popular libraries... 馃
@callsea1 Could you run config get timeout to see whether an idle client timeout has been set on the redis server?
@simondutertre I've tested locally using the following code:
const Redis = require('ioredis')
const redis = new Redis.Cluster([{
port: 30001
}, {
port: 30002
}, {
port: 30003
}])
redis.on('connect', console.log.bind(console, 'abc'))
Only one connect is emitted. Could you enable the debug mode DEBUG=ioredis:* node yourapp.js and post the logs here?
here are the logs ( same code as above ), it appears that the multiple connections are caused by the node being empty, although the number of connection seem to be random ( 3 on this try, 1 on second ) :
ioredis:cluster status: [empty] -> connecting +0ms
ioredis:cluster:connectionPool Connecting to clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 as master +0ms
ioredis:redis status[clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: [empty] -> wait +0ms
ioredis:cluster:connectionPool Connecting to clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 as master +4ms
ioredis:redis status[clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 as master +2ms
ioredis:redis status[clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: [empty] -> wait +1ms
ioredis:cluster getting slot cache from clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 +12ms
ioredis:redis status[clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: wait -> connecting +4ms
ioredis:redis queue command[0] -> cluster(slots) +1ms
ioredis:redis status[10.0.16.159:6379]: connecting -> connect +24ms
ioredis:redis write command[0] -> info() +2ms
ioredis:redis status[10.0.16.159:6379]: connect -> ready +5ms
ioredis:connection send 1 commands in offline queue +0ms
ioredis:redis write command[0] -> cluster(slots) +1ms
ioredis:cluster:connectionPool Disconnect clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +41ms
ioredis:cluster:connectionPool Disconnect clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +0ms
ioredis:redis status[clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: wait -> close +4ms
ioredis:connection skip reconnecting since the connection is manually closed. +5ms
ioredis:redis status[clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: close -> end +1ms
ioredis:cluster:connectionPool Disconnect clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +2ms
ioredis:redis status[clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: wait -> close +1ms
ioredis:connection skip reconnecting since the connection is manually closed. +2ms
ioredis:redis status[clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: close -> end +0ms
ioredis:cluster:connectionPool Connecting to 10.0.41.235:6379 as master +4ms
ioredis:redis status[10.0.41.235:6379]: [empty] -> wait +3ms
ioredis:cluster:connectionPool Connecting to 10.0.9.160:6379 as slave +1ms
ioredis:redis status[10.0.9.160:6379]: [empty] -> wait +1ms
ioredis:cluster:connectionPool Connecting to 10.0.16.159:6379 as master +0ms
ioredis:redis status[10.0.16.159:6379]: [empty] -> wait +1ms
ioredis:cluster:connectionPool Connecting to 10.0.48.26:6379 as slave +1ms
ioredis:redis status[10.0.48.26:6379]: [empty] -> wait +1ms
ioredis:cluster:connectionPool Connecting to 10.0.86.18:6379 as master +1ms
ioredis:redis status[10.0.86.18:6379]: [empty] -> wait +0ms
ioredis:cluster:connectionPool Connecting to 10.0.37.140:6379 as slave +1ms
ioredis:redis status[10.0.37.140:6379]: [empty] -> wait +1ms
ioredis:cluster status: connecting -> connect +49ms
ioredis:cluster Ready check failed (Error: Connection is closed.). Reconnecting... +6ms
ioredis:cluster status: connect -> disconnecting +0ms
ioredis:cluster:connectionPool Disconnect clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +6ms
ioredis:cluster:connectionPool Disconnect clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +1ms
ioredis:cluster:connectionPool Disconnect clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +0ms
ioredis:cluster:connectionPool Disconnect 10.0.41.235:6379 because the node does not hold any slot +0ms
ioredis:redis status[10.0.41.235:6379]: wait -> close +8ms
ioredis:connection skip reconnecting since the connection is manually closed. +15ms
ioredis:redis status[10.0.41.235:6379]: close -> end +0ms
ioredis:cluster:connectionPool Disconnect 10.0.9.160:6379 because the node does not hold any slot +2ms
ioredis:redis status[10.0.9.160:6379]: wait -> close +1ms
ioredis:connection skip reconnecting since the connection is manually closed. +1ms
ioredis:redis status[10.0.9.160:6379]: close -> end +0ms
ioredis:cluster:connectionPool Disconnect 10.0.16.159:6379 because the node does not hold any slot +1ms
ioredis:redis status[10.0.16.159:6379]: wait -> close +1ms
ioredis:connection skip reconnecting since the connection is manually closed. +1ms
ioredis:redis status[10.0.16.159:6379]: close -> end +1ms
ioredis:cluster:connectionPool Disconnect 10.0.48.26:6379 because the node does not hold any slot +1ms
ioredis:redis status[10.0.48.26:6379]: wait -> close +1ms
ioredis:connection skip reconnecting since the connection is manually closed. +2ms
ioredis:redis status[10.0.48.26:6379]: close -> end +0ms
ioredis:cluster:connectionPool Disconnect 10.0.86.18:6379 because the node does not hold any slot +1ms
ioredis:redis status[10.0.86.18:6379]: wait -> close +0ms
ioredis:connection skip reconnecting since the connection is manually closed. +0ms
ioredis:redis status[10.0.86.18:6379]: close -> end +1ms
ioredis:cluster:connectionPool Disconnect 10.0.37.140:6379 because the node does not hold any slot +1ms
ioredis:redis status[10.0.37.140:6379]: wait -> close +0ms
ioredis:connection skip reconnecting since the connection is manually closed. +1ms
ioredis:redis status[10.0.37.140:6379]: close -> end +0ms
Connect event
ioredis:redis status[10.0.16.159:6379]: ready -> close +5ms
ioredis:connection skip reconnecting since the connection is manually closed. +5ms
ioredis:redis status[10.0.16.159:6379]: close -> end +0ms
ioredis:cluster status: disconnecting -> close +13ms
ioredis:cluster status: close -> reconnecting +0ms
ioredis:cluster Cluster is disconnected. Retrying after 102ms +103ms
ioredis:cluster status: reconnecting -> connecting +0ms
ioredis:cluster:connectionPool Connecting to clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 as master +110ms
ioredis:redis status[clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: [empty] -> wait +105ms
ioredis:cluster:connectionPool Connecting to clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 as master +0ms
ioredis:redis status[clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: [empty] -> wait +1ms
ioredis:cluster:connectionPool Connecting to clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 as master +1ms
ioredis:redis status[clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: [empty] -> wait +0ms
ioredis:cluster getting slot cache from clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 +2ms
ioredis:redis status[clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: wait -> connecting +1ms
ioredis:redis queue command[0] -> cluster(slots) +0ms
ioredis:redis status[clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: wait -> connecting +0ms
ioredis:redis status[10.0.86.18:6379]: connecting -> connect +2ms
ioredis:redis write command[0] -> info() +1ms
ioredis:redis status[10.0.16.159:6379]: connecting -> connect +0ms
ioredis:redis write command[0] -> info() +0ms
ioredis:redis status[10.0.86.18:6379]: connect -> ready +1ms
ioredis:connection send 1 commands in offline queue +111ms
ioredis:redis write command[0] -> cluster(slots) +0ms
ioredis:redis status[10.0.16.159:6379]: connect -> ready +1ms
ioredis:cluster:connectionPool Disconnect clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +7ms
ioredis:cluster:connectionPool Disconnect clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +1ms
ioredis:cluster:connectionPool Disconnect clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +0ms
ioredis:redis status[clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: wait -> close +2ms
ioredis:connection skip reconnecting since the connection is manually closed. +3ms
ioredis:redis status[clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: close -> end +0ms
ioredis:cluster:connectionPool Connecting to 10.0.16.159:6379 as master +1ms
ioredis:redis status[10.0.16.159:6379]: [empty] -> wait +1ms
ioredis:cluster:connectionPool Connecting to 10.0.48.26:6379 as slave +0ms
ioredis:redis status[10.0.48.26:6379]: [empty] -> wait +0ms
ioredis:cluster:connectionPool Connecting to 10.0.86.18:6379 as master +0ms
ioredis:redis status[10.0.86.18:6379]: [empty] -> wait +1ms
ioredis:cluster:connectionPool Connecting to 10.0.37.140:6379 as slave +1ms
ioredis:redis status[10.0.37.140:6379]: [empty] -> wait +0ms
ioredis:cluster:connectionPool Connecting to 10.0.41.235:6379 as master +0ms
ioredis:redis status[10.0.41.235:6379]: [empty] -> wait +3ms
ioredis:cluster:connectionPool Connecting to 10.0.9.160:6379 as slave +3ms
ioredis:redis status[10.0.9.160:6379]: [empty] -> wait +3ms
ioredis:cluster status: connecting -> connect +16ms
ioredis:cluster Ready check failed (Error: Connection is closed.). Reconnecting... +0ms
ioredis:cluster status: connect -> disconnecting +1ms
ioredis:cluster:connectionPool Disconnect clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +4ms
ioredis:cluster:connectionPool Disconnect clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +0ms
ioredis:cluster:connectionPool Disconnect clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +0ms
ioredis:cluster:connectionPool Disconnect 10.0.16.159:6379 because the node does not hold any slot +0ms
ioredis:redis status[10.0.16.159:6379]: wait -> close +2ms
ioredis:connection skip reconnecting since the connection is manually closed. +10ms
ioredis:redis status[10.0.16.159:6379]: close -> end +0ms
ioredis:cluster:connectionPool Disconnect 10.0.48.26:6379 because the node does not hold any slot +2ms
ioredis:redis status[10.0.48.26:6379]: wait -> close +1ms
ioredis:connection skip reconnecting since the connection is manually closed. +1ms
ioredis:redis status[10.0.48.26:6379]: close -> end +0ms
ioredis:cluster:connectionPool Disconnect 10.0.86.18:6379 because the node does not hold any slot +1ms
ioredis:redis status[10.0.86.18:6379]: wait -> close +1ms
ioredis:connection skip reconnecting since the connection is manually closed. +1ms
ioredis:redis status[10.0.86.18:6379]: close -> end +2ms
ioredis:cluster:connectionPool Disconnect 10.0.37.140:6379 because the node does not hold any slot +2ms
ioredis:redis status[10.0.37.140:6379]: wait -> close +0ms
ioredis:connection skip reconnecting since the connection is manually closed. +3ms
ioredis:redis status[10.0.37.140:6379]: close -> end +1ms
ioredis:cluster:connectionPool Disconnect 10.0.41.235:6379 because the node does not hold any slot +1ms
ioredis:redis status[10.0.41.235:6379]: wait -> close +3ms
ioredis:connection skip reconnecting since the connection is manually closed. +3ms
ioredis:redis status[10.0.41.235:6379]: close -> end +0ms
ioredis:cluster:connectionPool Disconnect 10.0.9.160:6379 because the node does not hold any slot +3ms
ioredis:redis status[10.0.9.160:6379]: wait -> close +0ms
ioredis:connection skip reconnecting since the connection is manually closed. +0ms
ioredis:redis status[10.0.9.160:6379]: close -> end +1ms
Connect event
ioredis:redis status[10.0.86.18:6379]: ready -> close +2ms
ioredis:connection skip reconnecting since the connection is manually closed. +3ms
ioredis:redis status[10.0.86.18:6379]: close -> end +0ms
ioredis:redis status[10.0.16.159:6379]: ready -> close +1ms
ioredis:connection skip reconnecting since the connection is manually closed. +1ms
ioredis:redis status[10.0.16.159:6379]: close -> end +0ms
ioredis:cluster status: disconnecting -> close +13ms
ioredis:cluster status: close -> reconnecting +0ms
ioredis:cluster Cluster is disconnected. Retrying after 104ms +107ms
ioredis:cluster status: reconnecting -> connecting +1ms
ioredis:cluster:connectionPool Connecting to clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 as master +112ms
ioredis:redis status[clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: [empty] -> wait +108ms
ioredis:cluster:connectionPool Connecting to clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 as master +1ms
ioredis:redis status[clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: [empty] -> wait +1ms
ioredis:cluster:connectionPool Connecting to clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 as master +1ms
ioredis:redis status[clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: [empty] -> wait +1ms
ioredis:cluster getting slot cache from clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 +2ms
ioredis:redis status[clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: wait -> connecting +0ms
ioredis:redis queue command[0] -> cluster(slots) +1ms
ioredis:redis status[clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: wait -> connecting +0ms
ioredis:redis status[10.0.41.235:6379]: connecting -> connect +6ms
ioredis:redis write command[0] -> info() +1ms
ioredis:redis status[10.0.16.159:6379]: connecting -> connect +0ms
ioredis:redis write command[0] -> info() +0ms
ioredis:redis status[10.0.41.235:6379]: connect -> ready +1ms
ioredis:connection send 1 commands in offline queue +119ms
ioredis:redis write command[0] -> cluster(slots) +0ms
ioredis:redis status[10.0.16.159:6379]: connect -> ready +1ms
ioredis:cluster:connectionPool Disconnect clustertest-0001-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +11ms
ioredis:cluster:connectionPool Disconnect clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +0ms
ioredis:redis status[clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: wait -> close +1ms
ioredis:connection skip reconnecting since the connection is manually closed. +3ms
ioredis:redis status[clustertest-0002-001.ggdm49.0001.euw1.cache.amazonaws.com:6379]: close -> end +1ms
ioredis:cluster:connectionPool Disconnect clustertest-0003-001.ggdm49.0001.euw1.cache.amazonaws.com:6379 because the node does not hold any slot +2ms
ioredis:cluster:connectionPool Connecting to 10.0.41.235:6379 as master +0ms
ioredis:redis status[10.0.41.235:6379]: [empty] -> wait +1ms
ioredis:cluster:connectionPool Connecting to 10.0.9.160:6379 as slave +1ms
ioredis:redis status[10.0.9.160:6379]: [empty] -> wait +1ms
ioredis:cluster:connectionPool Connecting to 10.0.86.18:6379 as master +0ms
ioredis:redis status[10.0.86.18:6379]: [empty] -> wait +1ms
ioredis:cluster:connectionPool Connecting to 10.0.37.140:6379 as slave +1ms
ioredis:redis status[10.0.37.140:6379]: [empty] -> wait +0ms
ioredis:cluster:connectionPool Connecting to 10.0.16.159:6379 as master +0ms
ioredis:redis status[10.0.16.159:6379]: [empty] -> wait +0ms
ioredis:cluster:connectionPool Connecting to 10.0.48.26:6379 as slave +1ms
ioredis:redis status[10.0.48.26:6379]: [empty] -> wait +1ms
ioredis:cluster status: connecting -> connect +16ms
ioredis:redis status[10.0.16.159:6379]: wait -> connecting +0ms
ioredis:redis queue command[0] -> cluster(info) +0ms
Connect event
ioredis:redis status[10.0.41.235:6379]: ready -> close +2ms
ioredis:connection skip reconnecting since the connection is manually closed. +6ms
ioredis:redis status[10.0.41.235:6379]: close -> end +0ms
ioredis:redis status[10.0.16.159:6379]: connecting -> connect +0ms
ioredis:redis write command[0] -> info() +1ms
ioredis:redis status[10.0.16.159:6379]: ready -> close +0ms
ioredis:connection skip reconnecting since the connection is manually closed. +1ms
ioredis:redis status[10.0.16.159:6379]: close -> end +0ms
ioredis:redis status[10.0.9.160:6379]: wait -> connecting +0ms
ioredis:redis status[10.0.16.159:6379]: connect -> ready +1ms
ioredis:connection send 1 commands in offline queue +1ms
ioredis:redis write command[0] -> cluster(info) +0ms
ioredis:redis status[10.0.9.160:6379]: connecting -> connect +1ms
ioredis:redis write command[0] -> info() +0ms
ioredis:cluster status: connect -> ready +6ms
ioredis:redis status[10.0.9.160:6379]: connect -> ready +1ms
ioredis:connection set the connection to readonly mode +3ms
ioredis:redis write command[0] -> readonly() +1ms
ioredis:cluster getting slot cache from 10.0.48.26:6379 +5s
ioredis:redis status[10.0.48.26:6379]: wait -> connecting +5s
ioredis:redis queue command[0] -> cluster(slots) +0ms
ioredis:redis status[10.0.48.26:6379]: connecting -> connect +2ms
ioredis:redis write command[0] -> info() +0ms
ioredis:redis status[10.0.48.26:6379]: connect -> ready +2ms
ioredis:connection set the connection to readonly mode +5s
ioredis:redis write command[0] -> readonly() +1ms
ioredis:connection send 1 commands in offline queue +1ms
ioredis:redis write command[0] -> cluster(slots) +0ms
ioredis:cluster getting slot cache from 10.0.48.26:6379 +5s
ioredis:redis write command[0] -> cluster(slots) +5s
ioredis:cluster getting slot cache from 10.0.41.235:6379 +5s
ioredis:redis status[10.0.41.235:6379]: wait -> connecting +5s
ioredis:redis queue command[0] -> cluster(slots) +1ms
ioredis:redis status[10.0.41.235:6379]: connecting -> connect +1ms
ioredis:redis write command[0] -> info() +0ms
ioredis:redis status[10.0.41.235:6379]: connect -> ready +1ms
ioredis:connection send 1 commands in offline queue +10s
ioredis:redis write command[0] -> cluster(slots) +1ms
ioredis:cluster getting slot cache from 10.0.16.159:6379 +5s
ioredis:redis write command[0] -> cluster(slots) +5s
ioredis:cluster getting slot cache from 10.0.41.235:6379 +5s
ioredis:redis write command[0] -> cluster(slots) +5s
ioredis:cluster getting slot cache from 10.0.16.159:6379 +5s
ioredis:redis write command[0] -> cluster(slots) +5s
ioredis:cluster getting slot cache from 10.0.37.140:6379 +5s
ioredis:redis status[10.0.37.140:6379]: wait -> connecting +5s
ioredis:redis queue command[0] -> cluster(slots) +0ms
ioredis:redis status[10.0.37.140:6379]: connecting -> connect +2ms
ioredis:redis write command[0] -> info() +0ms
ioredis:redis status[10.0.37.140:6379]: connect -> ready +3ms
ioredis:connection set the connection to readonly mode +20s
ioredis:redis write command[0] -> readonly() +0ms
ioredis:connection send 1 commands in offline queue +1ms
ioredis:redis write command[0] -> cluster(slots) +1ms
ioredis:cluster getting slot cache from 10.0.86.18:6379 +5s
ioredis:redis status[10.0.86.18:6379]: wait -> connecting +5s
ioredis:redis queue command[0] -> cluster(slots) +0ms
ioredis:redis status[10.0.86.18:6379]: connecting -> connect +1ms
ioredis:redis write command[0] -> info() +0ms
ioredis:redis status[10.0.86.18:6379]: connect -> ready +1ms
ioredis:connection send 1 commands in offline queue +5s
ioredis:redis write command[0] -> cluster(slots) +1ms
I tried the lazyConnect suggestion above, and the same behavior happened
@callsea1
If you modify it referring comment, Is there any problem?
This issue has been solved in v4.2.0. Feel free to reopen this issue if the issue still exists.
this is not fixed. please reopen this issue @luin

@callsea1 That may be a different issue. Could you enable the debug mode (DEBUG=ioredis:* node yourapp.js) and post the logs here?
This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 7 days if no further activity occurs, but feel free to re-open a closed issue if needed.
@luin i am using version "ioredis": "^4.3.0" and still getting this error.
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.602Z ioredis:connection error: Error: connect ETIMEDOUT 10.10.159.6:6379
0|main | 2019-07-02 13:52:01 +05:30: Error Error: connect ETIMEDOUT 10.10.159.6:6379
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.603Z ioredis:connection error: Error: connect ETIMEDOUT 10.10.159.6:6379
0|main | 2019-07-02 13:52:01 +05:30: Error Error: connect ETIMEDOUT 10.10.159.6:6379
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.603Z ioredis:redis status[localhost:6379]: connecting -> close
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.604Z ioredis:connection reconnect in 50ms
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.604Z ioredis:redis status[localhost:6379]: close -> reconnecting
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.604Z ioredis:redis status[localhost:6379]: connecting -> close
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.604Z ioredis:connection reconnect in 50ms
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.604Z ioredis:redis status[localhost:6379]: close -> reconnecting
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.654Z ioredis:redis status[localhost:6379]: reconnecting -> connecting
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.654Z ioredis:redis status[10.10.94.161:26379]: [empty] -> connecting
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.655Z ioredis:redis queue command[10.10.94.161:26379]: 0 -> sentinel([ 'slaves', 'mymaster' ])
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.656Z ioredis:redis status[10.10.94.161:26379]: connecting -> connect
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.656Z ioredis:redis status[10.10.94.161:26379]: connect -> ready
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.656Z ioredis:connection send 1 commands in offline queue
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.656Z ioredis:redis write command[10.10.94.161:26379]: 0 -> sentinel([ 'slaves', 'mymaster' ])
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.657Z ioredis:redis status[localhost:6379]: reconnecting -> connecting
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.657Z ioredis:redis status[10.10.94.161:26379]: [empty] -> connecting
0|main | 2019-07-02 13:52:01 +05:30: 2019-07-02T08:22:01.657Z ioredis:redis queue command[10.10.94.161:26379]: 0 -> sentinel([ 'slaves', 'mymaster' ])
@luin
ioredis:cluster:connectionPool Reset with [ { port: 8000, host: '127.0.0.1', password: '123' },
ioredis:cluster:connectionPool { port: 8001, host: '127.0.0.1', password: '123' },
ioredis:cluster:connectionPool { port: 8001, host: '127.0.0.1', password: '123' } ] +0ms
ioredis:cluster:connectionPool Connecting to 127.0.0.1:8000 as master +5ms
ioredis:redis status[127.0.0.1:8000]: [empty] -> wait +0ms
ioredis:cluster:connectionPool Connecting to 127.0.0.1:8001 as master +3ms
ioredis:redis status[127.0.0.1:8001]: [empty] -> wait +3ms
ioredis:cluster getting slot cache from 127.0.0.1:8001 +96ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterRefresher)]: [empty] -> wait +5ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterRefresher)]: wait -> connecting +4ms
ioredis:redis queue command[127.0.0.1:8001 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +1ms
ioredis:cluster:subscriber selected a subscriber 127.0.0.1:8001 +0ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterSubscriber)]: [empty] -> wait +3ms
ioredis:cluster:subscriber started +3ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterRefresher)]: connecting -> connect +13ms
ioredis:redis write command[127.0.0.1:8001 (ioredisClusterRefresher)]: 0 -> auth([ '123' ]) +1ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterRefresher)]: connect -> ready +5ms
ioredis:connection set the connection name [ioredisClusterRefresher] +0ms
ioredis:redis write command[127.0.0.1:8001 (ioredisClusterRefresher)]: 0 -> client([ 'setname', 'ioredisClusterRefresher' ]) +3ms
ioredis:connection send 1 commands in offline queue +4ms
ioredis:redis write command[127.0.0.1:8001 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +4ms
[WARN] Redis server does not require a password, but a password was supplied.
ioredis:cluster cluster slots result count: 3 +51ms
ioredis:cluster cluster slots result [0]: slots 10923~16383 served by 172.18.0.4:8002,172.18.0.5:8003 +1ms
ioredis:cluster cluster slots result [1]: slots 5461~10922 served by 172.18.0.3:8001,172.18.0.7:8005 +3ms
ioredis:cluster cluster slots result [2]: slots 0~5460 served by 172.18.0.2:8000,172.18.0.6:8004 +1ms
ioredis:cluster:connectionPool Reset with [ { host: '172.18.0.4', port: 8002, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.5', port: 8003, readOnly: true },
ioredis:cluster:connectionPool { host: '172.18.0.3', port: 8001, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.7', port: 8005, readOnly: true },
ioredis:cluster:connectionPool { host: '172.18.0.2', port: 8000, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.6', port: 8004, readOnly: true } ] +62ms
ioredis:cluster:connectionPool Disconnect 127.0.0.1:8000 because the node does not hold any slot +10ms
ioredis:redis status[127.0.0.1:8000]: wait -> close +32ms
ioredis:connection skip reconnecting since the connection is manually closed. +34ms
ioredis:redis status[127.0.0.1:8000]: close -> end +2ms
ioredis:cluster:connectionPool Remove 127.0.0.1:8000 from the pool +6ms
ioredis:cluster:connectionPool Disconnect 127.0.0.1:8001 because the node does not hold any slot +1ms
ioredis:redis status[127.0.0.1:8001]: wait -> close +5ms
ioredis:connection skip reconnecting since the connection is manually closed. +7ms
ioredis:redis status[127.0.0.1:8001]: close -> end +2ms
ioredis:cluster:connectionPool Remove 127.0.0.1:8001 from the pool +4ms
ioredis:cluster:connectionPool Connecting to 172.18.0.4:8002 as master +2ms
ioredis:redis status[172.18.0.4:8002]: [empty] -> wait +6ms
ioredis:cluster:connectionPool Connecting to 172.18.0.5:8003 as slave +3ms
ioredis:redis status[172.18.0.5:8003]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.3:8001 as master +2ms
ioredis:redis status[172.18.0.3:8001]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.7:8005 as slave +3ms
ioredis:redis status[172.18.0.7:8005]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.2:8000 as master +2ms
ioredis:redis status[172.18.0.2:8000]: [empty] -> wait +4ms
ioredis:cluster:connectionPool Connecting to 172.18.0.6:8004 as slave +4ms
ioredis:redis status[172.18.0.6:8004]: [empty] -> wait +2ms
ioredis:cluster status: connecting -> connect +42ms
ioredis:redis status[172.18.0.2:8000]: wait -> connecting +4ms
ioredis:redis queue command[172.18.0.2:8000]: 0 -> cluster([ 'info' ]) +1ms
ioredis:cluster:subscriber subscriber has left, selecting a new one... +89ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterSubscriber)]: wait -> close +3ms
ioredis:connection skip reconnecting since the connection is manually closed. +28ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterSubscriber)]: close -> end +1ms
ioredis:cluster:subscriber selected a subscriber 172.18.0.5:8003 +4ms
ioredis:redis status[172.18.0.5:8003 (ioredisClusterSubscriber)]: [empty] -> wait +2ms
redis was connected!
ioredis:redis status[127.0.0.1:8001 (ioredisClusterRefresher)]: ready -> close +6ms
ioredis:connection skip reconnecting since the connection is manually closed. +10ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterRefresher)]: close -> end +3ms
ioredis:connection error: Error: connect ETIMEDOUT +10s
ioredis:redis status[172.18.0.2:8000]: connecting -> close +10s
ioredis:connection skip reconnecting because retryStrategy is not a function +7ms
ioredis:redis status[172.18.0.2:8000]: close -> end +7ms
ioredis:cluster:connectionPool Remove 172.18.0.2:8000 from the pool +10s
ioredis:cluster Ready check failed (Error: Connection is closed.). Reconnecting... +10s
ioredis:cluster status: connect -> disconnecting +6ms
ioredis:redis status[172.18.0.5:8003 (ioredisClusterSubscriber)]: wait -> close +24ms
ioredis:connection skip reconnecting since the connection is manually closed. +34ms
ioredis:redis status[172.18.0.5:8003 (ioredisClusterSubscriber)]: close -> end +7ms
ioredis:cluster:subscriber stopped +10s
ioredis:cluster:connectionPool Reset with [] +25ms
ioredis:cluster:connectionPool Disconnect 172.18.0.4:8002 because the node does not hold any slot +2ms
ioredis:redis status[172.18.0.4:8002]: wait -> close +9ms
ioredis:connection skip reconnecting since the connection is manually closed. +14ms
ioredis:redis status[172.18.0.4:8002]: close -> end +4ms
ioredis:cluster:connectionPool Remove 172.18.0.4:8002 from the pool +9ms
ioredis:cluster:connectionPool Disconnect 172.18.0.5:8003 because the node does not hold any slot +1ms
ioredis:redis status[172.18.0.5:8003]: wait -> close +7ms
ioredis:connection skip reconnecting since the connection is manually closed. +9ms
ioredis:redis status[172.18.0.5:8003]: close -> end +4ms
ioredis:cluster:connectionPool Remove 172.18.0.5:8003 from the pool +9ms
ioredis:cluster:connectionPool Disconnect 172.18.0.3:8001 because the node does not hold any slot +2ms
ioredis:redis status[172.18.0.3:8001]: wait -> close +4ms
ioredis:connection skip reconnecting since the connection is manually closed. +9ms
ioredis:redis status[172.18.0.3:8001]: close -> end +3ms
ioredis:cluster:connectionPool Remove 172.18.0.3:8001 from the pool +5ms
ioredis:cluster:connectionPool Disconnect 172.18.0.7:8005 because the node does not hold any slot +1ms
ioredis:redis status[172.18.0.7:8005]: wait -> close +3ms
ioredis:connection skip reconnecting since the connection is manually closed. +5ms
ioredis:redis status[172.18.0.7:8005]: close -> end +2ms
ioredis:cluster:connectionPool Remove 172.18.0.7:8005 from the pool +4ms
ioredis:cluster:connectionPool Disconnect 172.18.0.6:8004 because the node does not hold any slot +1ms
ioredis:redis status[172.18.0.6:8004]: wait -> close +5ms
ioredis:connection skip reconnecting since the connection is manually closed. +8ms
ioredis:redis status[172.18.0.6:8004]: close -> end +2ms
ioredis:cluster:connectionPool Remove 172.18.0.6:8004 from the pool +6ms
ioredis:cluster status: disconnecting -> close +58ms
ioredis:cluster status: close -> close +1ms
ioredis:cluster status: close -> close +0ms
ioredis:cluster status: close -> close +1ms
ioredis:cluster status: close -> close +1ms
ioredis:cluster status: close -> reconnecting +3ms
ioredis:cluster Cluster is disconnected. Retrying after 102ms +105ms
ioredis:cluster status: reconnecting -> connecting +2ms
ioredis:cluster:connectionPool Reset with [ { port: 8000, host: '127.0.0.1', password: '123' },
ioredis:cluster:connectionPool { port: 8001, host: '127.0.0.1', password: '123' },
ioredis:cluster:connectionPool { port: 8001, host: '127.0.0.1', password: '123' } ] +119ms
ioredis:cluster:connectionPool Connecting to 127.0.0.1:8000 as master +13ms
ioredis:redis status[127.0.0.1:8000]: [empty] -> wait +135ms
ioredis:cluster:connectionPool Connecting to 127.0.0.1:8001 as master +3ms
ioredis:redis status[127.0.0.1:8001]: [empty] -> wait +3ms
ioredis:cluster getting slot cache from 127.0.0.1:8000 +26ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: [empty] -> wait +8ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: wait -> connecting +1ms
ioredis:redis queue command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +2ms
ioredis:cluster:subscriber selected a subscriber 127.0.0.1:8001 +192ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterSubscriber)]: [empty] -> wait +6ms
ioredis:cluster:subscriber started +6ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: connecting -> connect +7ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> auth([ '123' ]) +2ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: connect -> ready +3ms
ioredis:connection set the connection name [ioredisClusterRefresher] +168ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> client([ 'setname', 'ioredisClusterRefresher' ]) +3ms
ioredis:connection send 1 commands in offline queue +4ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +4ms
[WARN] Redis server does not require a password, but a password was supplied.
ioredis:cluster cluster slots result count: 3 +37ms
ioredis:cluster cluster slots result [0]: slots 0~5460 served by 172.18.0.2:8000,172.18.0.6:8004 +0ms
ioredis:cluster cluster slots result [1]: slots 5461~10922 served by 172.18.0.3:8001,172.18.0.7:8005 +3ms
ioredis:cluster cluster slots result [2]: slots 10923~16383 served by 172.18.0.4:8002,172.18.0.5:8003 +1ms
ioredis:cluster:connectionPool Reset with [ { host: '172.18.0.2', port: 8000, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.6', port: 8004, readOnly: true },
ioredis:cluster:connectionPool { host: '172.18.0.3', port: 8001, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.7', port: 8005, readOnly: true },
ioredis:cluster:connectionPool { host: '172.18.0.4', port: 8002, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.5', port: 8003, readOnly: true } ] +49ms
ioredis:cluster:connectionPool Disconnect 127.0.0.1:8000 because the node does not hold any slot +8ms
ioredis:redis status[127.0.0.1:8000]: wait -> close +21ms
ioredis:connection skip reconnecting since the connection is manually closed. +24ms
ioredis:redis status[127.0.0.1:8000]: close -> end +3ms
ioredis:cluster:connectionPool Remove 127.0.0.1:8000 from the pool +6ms
ioredis:cluster:connectionPool Disconnect 127.0.0.1:8001 because the node does not hold any slot +2ms
ioredis:redis status[127.0.0.1:8001]: wait -> close +4ms
ioredis:connection skip reconnecting since the connection is manually closed. +7ms
ioredis:redis status[127.0.0.1:8001]: close -> end +3ms
ioredis:cluster:connectionPool Remove 127.0.0.1:8001 from the pool +6ms
ioredis:cluster:connectionPool Connecting to 172.18.0.2:8000 as master +1ms
ioredis:redis status[172.18.0.2:8000]: [empty] -> wait +4ms
ioredis:cluster:connectionPool Connecting to 172.18.0.6:8004 as slave +2ms
ioredis:redis status[172.18.0.6:8004]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.3:8001 as master +2ms
ioredis:redis status[172.18.0.3:8001]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.7:8005 as slave +4ms
ioredis:redis status[172.18.0.7:8005]: [empty] -> wait +4ms
ioredis:cluster:connectionPool Connecting to 172.18.0.4:8002 as master +2ms
ioredis:redis status[172.18.0.4:8002]: [empty] -> wait +4ms
ioredis:cluster:connectionPool Connecting to 172.18.0.5:8003 as slave +4ms
ioredis:redis status[172.18.0.5:8003]: [empty] -> wait +2ms
ioredis:cluster status: connecting -> connect +41ms
ioredis:redis status[172.18.0.2:8000]: wait -> connecting +3ms
ioredis:redis queue command[172.18.0.2:8000]: 0 -> cluster([ 'info' ]) +1ms
ioredis:cluster:subscriber subscriber has left, selecting a new one... +72ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterSubscriber)]: wait -> close +3ms
ioredis:connection skip reconnecting since the connection is manually closed. +28ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterSubscriber)]: close -> end +2ms
ioredis:cluster:subscriber selected a subscriber 172.18.0.3:8001 +5ms
ioredis:redis status[172.18.0.3:8001 (ioredisClusterSubscriber)]: [empty] -> wait +3ms
redis was connected!
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: ready -> close +5ms
ioredis:connection skip reconnecting since the connection is manually closed. +9ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: close -> end +1ms
ioredis:connection error: Error: connect ETIMEDOUT +10s
ioredis:redis status[172.18.0.2:8000]: connecting -> close +10s
ioredis:connection skip reconnecting because retryStrategy is not a function +5ms
ioredis:redis status[172.18.0.2:8000]: close -> end +7ms
ioredis:cluster:connectionPool Remove 172.18.0.2:8000 from the pool +10s
ioredis:cluster Ready check failed (Error: Connection is closed.). Reconnecting... +10s
ioredis:cluster status: connect -> disconnecting +4ms
ioredis:redis status[172.18.0.3:8001 (ioredisClusterSubscriber)]: wait -> close +26ms
ioredis:connection skip reconnecting since the connection is manually closed. +33ms
ioredis:redis status[172.18.0.3:8001 (ioredisClusterSubscriber)]: close -> end +4ms
ioredis:cluster:subscriber stopped +10s
ioredis:cluster:connectionPool Reset with [] +34ms
ioredis:cluster:connectionPool Disconnect 172.18.0.6:8004 because the node does not hold any slot +1ms
ioredis:redis status[172.18.0.6:8004]: wait -> close +14ms
ioredis:connection skip reconnecting since the connection is manually closed. +17ms
ioredis:redis status[172.18.0.6:8004]: close -> end +3ms
ioredis:cluster:connectionPool Remove 172.18.0.6:8004 from the pool +11ms
ioredis:cluster:connectionPool Disconnect 172.18.0.3:8001 because the node does not hold any slot +1ms
ioredis:redis status[172.18.0.3:8001]: wait -> close +8ms
ioredis:connection skip reconnecting since the connection is manually closed. +10ms
ioredis:redis status[172.18.0.3:8001]: close -> end +2ms
ioredis:cluster:connectionPool Remove 172.18.0.3:8001 from the pool +5ms
ioredis:cluster:connectionPool Disconnect 172.18.0.7:8005 because the node does not hold any slot +0ms
ioredis:redis status[172.18.0.7:8005]: wait -> close +3ms
ioredis:connection skip reconnecting since the connection is manually closed. +6ms
ioredis:redis status[172.18.0.7:8005]: close -> end +4ms
ioredis:cluster:connectionPool Remove 172.18.0.7:8005 from the pool +6ms
ioredis:cluster:connectionPool Disconnect 172.18.0.4:8002 because the node does not hold any slot +1ms
ioredis:redis status[172.18.0.4:8002]: wait -> close +3ms
ioredis:connection skip reconnecting since the connection is manually closed. +6ms
ioredis:redis status[172.18.0.4:8002]: close -> end +2ms
ioredis:cluster:connectionPool Remove 172.18.0.4:8002 from the pool +4ms
ioredis:cluster:connectionPool Disconnect 172.18.0.5:8003 because the node does not hold any slot +2ms
ioredis:redis status[172.18.0.5:8003]: wait -> close +5ms
ioredis:connection skip reconnecting since the connection is manually closed. +6ms
ioredis:redis status[172.18.0.5:8003]: close -> end +1ms
ioredis:cluster:connectionPool Remove 172.18.0.5:8003 from the pool +4ms
ioredis:cluster status: disconnecting -> close +55ms
ioredis:cluster status: close -> close +1ms
ioredis:cluster status: close -> close +3ms
ioredis:cluster status: close -> close +1ms
ioredis:cluster status: close -> close +1ms
ioredis:cluster status: close -> reconnecting +1ms
ioredis:cluster Cluster is disconnected. Retrying after 104ms +106ms
ioredis:cluster status: reconnecting -> connecting +2ms
ioredis:cluster:connectionPool Reset with [ { port: 8000, host: '127.0.0.1', password: '123' },
ioredis:cluster:connectionPool { port: 8001, host: '127.0.0.1', password: '123' },
ioredis:cluster:connectionPool { port: 8001, host: '127.0.0.1', password: '123' } ] +121ms
ioredis:cluster:connectionPool Connecting to 127.0.0.1:8000 as master +15ms
ioredis:redis status[127.0.0.1:8000]: [empty] -> wait +142ms
ioredis:cluster:connectionPool Connecting to 127.0.0.1:8001 as master +11ms
ioredis:redis status[127.0.0.1:8001]: [empty] -> wait +10ms
ioredis:cluster getting slot cache from 127.0.0.1:8000 +35ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: [empty] -> wait +9ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: wait -> connecting +1ms
ioredis:redis queue command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +2ms
ioredis:cluster:subscriber selected a subscriber 127.0.0.1:8001 +206ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterSubscriber)]: [empty] -> wait +4ms
ioredis:cluster:subscriber started +4ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: connecting -> connect +7ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> auth([ '123' ]) +1ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: connect -> ready +2ms
ioredis:connection set the connection name [ioredisClusterRefresher] +183ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> client([ 'setname', 'ioredisClusterRefresher' ]) +5ms
ioredis:connection send 1 commands in offline queue +3ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +5ms
[WARN] Redis server does not require a password, but a password was supplied.
ioredis:cluster cluster slots result count: 3 +42ms
ioredis:cluster cluster slots result [0]: slots 0~5460 served by 172.18.0.2:8000,172.18.0.6:8004 +0ms
ioredis:cluster cluster slots result [1]: slots 5461~10922 served by 172.18.0.3:8001,172.18.0.7:8005 +2ms
ioredis:cluster cluster slots result [2]: slots 10923~16383 served by 172.18.0.4:8002,172.18.0.5:8003 +1ms
ioredis:cluster:connectionPool Reset with [ { host: '172.18.0.2', port: 8000, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.6', port: 8004, readOnly: true },
ioredis:cluster:connectionPool { host: '172.18.0.3', port: 8001, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.7', port: 8005, readOnly: true },
ioredis:cluster:connectionPool { host: '172.18.0.4', port: 8002, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.5', port: 8003, readOnly: true } ] +52ms
ioredis:cluster:connectionPool Disconnect 127.0.0.1:8000 because the node does not hold any slot +8ms
ioredis:redis status[127.0.0.1:8000]: wait -> close +21ms
ioredis:connection skip reconnecting since the connection is manually closed. +26ms
ioredis:redis status[127.0.0.1:8000]: close -> end +4ms
ioredis:cluster:connectionPool Remove 127.0.0.1:8000 from the pool +6ms
ioredis:cluster:connectionPool Disconnect 127.0.0.1:8001 because the node does not hold any slot +2ms
ioredis:redis status[127.0.0.1:8001]: wait -> close +4ms
ioredis:connection skip reconnecting since the connection is manually closed. +7ms
ioredis:redis status[127.0.0.1:8001]: close -> end +2ms
ioredis:cluster:connectionPool Remove 127.0.0.1:8001 from the pool +4ms
ioredis:cluster:connectionPool Connecting to 172.18.0.2:8000 as master +1ms
ioredis:redis status[172.18.0.2:8000]: [empty] -> wait +7ms
ioredis:cluster:connectionPool Connecting to 172.18.0.6:8004 as slave +5ms
ioredis:redis status[172.18.0.6:8004]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.3:8001 as master +3ms
ioredis:redis status[172.18.0.3:8001]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.7:8005 as slave +2ms
ioredis:redis status[172.18.0.7:8005]: [empty] -> wait +3ms
ioredis:cluster:connectionPool Connecting to 172.18.0.4:8002 as master +3ms
ioredis:redis status[172.18.0.4:8002]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.5:8003 as slave +2ms
ioredis:redis status[172.18.0.5:8003]: [empty] -> wait +2ms
ioredis:cluster status: connecting -> connect +39ms
ioredis:redis status[172.18.0.3:8001]: wait -> connecting +2ms
ioredis:redis queue command[172.18.0.3:8001]: 0 -> cluster([ 'info' ]) +1ms
ioredis:cluster:subscriber subscriber has left, selecting a new one... +70ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterSubscriber)]: wait -> close +3ms
ioredis:connection skip reconnecting since the connection is manually closed. +26ms
ioredis:redis status[127.0.0.1:8001 (ioredisClusterSubscriber)]: close -> end +2ms
ioredis:cluster:subscriber selected a subscriber 172.18.0.5:8003 +5ms
ioredis:redis status[172.18.0.5:8003 (ioredisClusterSubscriber)]: [empty] -> wait +2ms
redis was connected!
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: ready -> close +3ms
ioredis:connection skip reconnecting since the connection is manually closed. +7ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: close -> end +2ms
ioredis:connection error: Error: connect ETIMEDOUT +10s
ioredis:redis status[172.18.0.3:8001]: connecting -> close +10s
ioredis:connection skip reconnecting because retryStrategy is not a function +5ms
ioredis:redis status[172.18.0.3:8001]: close -> end +10ms
ioredis:cluster:connectionPool Remove 172.18.0.3:8001 from the pool +10s
ioredis:cluster Ready check failed (Error: Connection is closed.). Reconnecting... +10s
ioredis:cluster status: connect -> disconnecting +6ms
ioredis:redis status[172.18.0.5:8003 (ioredisClusterSubscriber)]: wait -> close +18ms
ioredis:connection skip reconnecting since the connection is manually closed. +38ms
ioredis:redis status[172.18.0.5:8003 (ioredisClusterSubscriber)]: close -> end +19ms
ioredis:cluster:subscriber stopped +10s
ioredis:cluster:connectionPool Reset with [] +36ms
ioredis:cluster:connectionPool Disconnect 172.18.0.2:8000 because the node does not hold any slot +2ms
ioredis:redis status[172.18.0.2:8000]: wait -> close +6ms
ioredis:connection skip reconnecting since the connection is manually closed. +14ms
ioredis:redis status[172.18.0.2:8000]: close -> end +5ms
ioredis:cluster:connectionPool Remove 172.18.0.2:8000 from the pool +7ms
ioredis:cluster:connectionPool Disconnect 172.18.0.6:8004 because the node does not hold any slot +2ms
ioredis:redis status[172.18.0.6:8004]: wait -> close +4ms
ioredis:connection skip reconnecting since the connection is manually closed. +9ms
ioredis:redis status[172.18.0.6:8004]: close -> end +4ms
ioredis:cluster:connectionPool Remove 172.18.0.6:8004 from the pool +8ms
ioredis:cluster:connectionPool Disconnect 172.18.0.7:8005 because the node does not hold any slot +1ms
ioredis:redis status[172.18.0.7:8005]: wait -> close +6ms
ioredis:connection skip reconnecting since the connection is manually closed. +10ms
ioredis:redis status[172.18.0.7:8005]: close -> end +3ms
ioredis:cluster:connectionPool Remove 172.18.0.7:8005 from the pool +7ms
ioredis:cluster:connectionPool Disconnect 172.18.0.4:8002 because the node does not hold any slot +2ms
ioredis:redis status[172.18.0.4:8002]: wait -> close +5ms
ioredis:connection skip reconnecting since the connection is manually closed. +7ms
ioredis:redis status[172.18.0.4:8002]: close -> end +2ms
ioredis:cluster:connectionPool Remove 172.18.0.4:8002 from the pool +4ms
ioredis:cluster:connectionPool Disconnect 172.18.0.5:8003 because the node does not hold any slot +0ms
ioredis:redis status[172.18.0.5:8003]: wait -> close +2ms
ioredis:connection skip reconnecting since the connection is manually closed. +4ms
ioredis:redis status[172.18.0.5:8003]: close -> end +2ms
ioredis:cluster:connectionPool Remove 172.18.0.5:8003 from the pool +6ms
ioredis:cluster status: disconnecting -> close +67ms
ioredis:cluster status: close -> close +1ms
ioredis:cluster status: close -> close +1ms
ioredis:cluster status: close -> close +1ms
ioredis:cluster status: close -> close +1ms
ioredis:cluster status: close -> reconnecting +5ms
ioredis:cluster Cluster is disconnected. Retrying after 106ms +106ms
ioredis:cluster status: reconnecting -> connecting +4ms
ioredis:cluster:connectionPool Reset with [ { port: 8000, host: '127.0.0.1', password: '123' },
ioredis:cluster:connectionPool { port: 8001, host: '127.0.0.1', password: '123' },
ioredis:cluster:connectionPool { port: 8001, host: '127.0.0.1', password: '123' } ] +123ms
ioredis:cluster:connectionPool Connecting to 127.0.0.1:8000 as master +16ms
ioredis:redis status[127.0.0.1:8000]: [empty] -> wait +148ms
ioredis:cluster:connectionPool Connecting to 127.0.0.1:8001 as master +7ms
ioredis:redis status[127.0.0.1:8001]: [empty] -> wait +5ms
ioredis:cluster getting slot cache from 127.0.0.1:8000 +36ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: [empty] -> wait +12ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: wait -> connecting +9ms
ioredis:redis queue command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +1ms
ioredis:cluster:subscriber selected a subscriber 127.0.0.1:8000 +216ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterSubscriber)]: [empty] -> wait +5ms
ioredis:cluster:subscriber started +3ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: connecting -> connect +8ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> auth([ '123' ]) +1ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: connect -> ready +2ms
ioredis:connection set the connection name [ioredisClusterRefresher] +193ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> client([ 'setname', 'ioredisClusterRefresher' ]) +5ms
ioredis:connection send 1 commands in offline queue +10ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +8ms
[WARN] Redis server does not require a password, but a password was supplied.
ioredis:cluster cluster slots result count: 3 +49ms
ioredis:cluster cluster slots result [0]: slots 0~5460 served by 172.18.0.2:8000,172.18.0.6:8004 +0ms
ioredis:cluster cluster slots result [1]: slots 5461~10922 served by 172.18.0.3:8001,172.18.0.7:8005 +2ms
ioredis:cluster cluster slots result [2]: slots 10923~16383 served by 172.18.0.4:8002,172.18.0.5:8003 +1ms
ioredis:cluster:connectionPool Reset with [ { host: '172.18.0.2', port: 8000, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.6', port: 8004, readOnly: true },
ioredis:cluster:connectionPool { host: '172.18.0.3', port: 8001, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.7', port: 8005, readOnly: true },
ioredis:cluster:connectionPool { host: '172.18.0.4', port: 8002, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.5', port: 8003, readOnly: true } ] +63ms
ioredis:cluster:connectionPool Disconnect 127.0.0.1:8000 because the node does not hold any slot +10ms
ioredis:redis status[127.0.0.1:8000]: wait -> close +19ms
ioredis:connection skip reconnecting since the connection is manually closed. +22ms
ioredis:redis status[127.0.0.1:8000]: close -> end +2ms
ioredis:cluster:connectionPool Remove 127.0.0.1:8000 from the pool +6ms
ioredis:cluster:connectionPool Disconnect 127.0.0.1:8001 because the node does not hold any slot +2ms
ioredis:redis status[127.0.0.1:8001]: wait -> close +6ms
ioredis:connection skip reconnecting since the connection is manually closed. +9ms
ioredis:redis status[127.0.0.1:8001]: close -> end +2ms
ioredis:cluster:connectionPool Remove 127.0.0.1:8001 from the pool +5ms
ioredis:cluster:connectionPool Connecting to 172.18.0.2:8000 as master +0ms
ioredis:redis status[172.18.0.2:8000]: [empty] -> wait +6ms
ioredis:cluster:connectionPool Connecting to 172.18.0.6:8004 as slave +5ms
ioredis:redis status[172.18.0.6:8004]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.3:8001 as master +2ms
ioredis:redis status[172.18.0.3:8001]: [empty] -> wait +7ms
ioredis:cluster:connectionPool Connecting to 172.18.0.7:8005 as slave +7ms
ioredis:redis status[172.18.0.7:8005]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.4:8002 as master +1ms
ioredis:redis status[172.18.0.4:8002]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.5:8003 as slave +2ms
ioredis:redis status[172.18.0.5:8003]: [empty] -> wait +2ms
ioredis:cluster status: connecting -> connect +44ms
ioredis:redis status[172.18.0.2:8000]: wait -> connecting +2ms
ioredis:redis queue command[172.18.0.2:8000]: 0 -> cluster([ 'info' ]) +3ms
ioredis:cluster:subscriber subscriber has left, selecting a new one... +79ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterSubscriber)]: wait -> close +2ms
ioredis:connection skip reconnecting since the connection is manually closed. +29ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterSubscriber)]: close -> end +2ms
ioredis:cluster:subscriber selected a subscriber 172.18.0.5:8003 +4ms
ioredis:redis status[172.18.0.5:8003 (ioredisClusterSubscriber)]: [empty] -> wait +2ms
redis was connected!
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: ready -> close +7ms
ioredis:connection skip reconnecting since the connection is manually closed. +10ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: close -> end +2ms
ioredis:connection error: Error: connect ETIMEDOUT +10s
ioredis:redis status[172.18.0.2:8000]: connecting -> close +10s
ioredis:connection skip reconnecting because retryStrategy is not a function +1ms
ioredis:redis status[172.18.0.2:8000]: close -> end +0ms
ioredis:cluster:connectionPool Remove 172.18.0.2:8000 from the pool +10s
ioredis:cluster Ready check failed (Error: Connection is closed.). Reconnecting... +10s
ioredis:cluster status: connect -> disconnecting +0ms
ioredis:redis status[172.18.0.5:8003 (ioredisClusterSubscriber)]: wait -> close +1ms
ioredis:connection skip reconnecting since the connection is manually closed. +2ms
ioredis:redis status[172.18.0.5:8003 (ioredisClusterSubscriber)]: close -> end +1ms
ioredis:cluster:subscriber stopped +10s
ioredis:cluster:connectionPool Reset with [] +1ms
ioredis:cluster:connectionPool Disconnect 172.18.0.6:8004 because the node does not hold any slot +1ms
ioredis:redis status[172.18.0.6:8004]: wait -> close +1ms
ioredis:connection skip reconnecting since the connection is manually closed. +1ms
ioredis:redis status[172.18.0.6:8004]: close -> end +1ms
ioredis:cluster:connectionPool Remove 172.18.0.6:8004 from the pool +3ms
ioredis:cluster:connectionPool Disconnect 172.18.0.3:8001 because the node does not hold any slot +1ms
ioredis:redis status[172.18.0.3:8001]: wait -> close +4ms
ioredis:connection skip reconnecting since the connection is manually closed. +9ms
ioredis:redis status[172.18.0.3:8001]: close -> end +6ms
ioredis:cluster:connectionPool Remove 172.18.0.3:8001 from the pool +9ms
ioredis:cluster:connectionPool Disconnect 172.18.0.7:8005 because the node does not hold any slot +1ms
ioredis:redis status[172.18.0.7:8005]: wait -> close +4ms
ioredis:connection skip reconnecting since the connection is manually closed. +7ms
ioredis:redis status[172.18.0.7:8005]: close -> end +6ms
ioredis:cluster:connectionPool Remove 172.18.0.7:8005 from the pool +8ms
ioredis:cluster:connectionPool Disconnect 172.18.0.4:8002 because the node does not hold any slot +2ms
ioredis:redis status[172.18.0.4:8002]: wait -> close +4ms
ioredis:connection skip reconnecting since the connection is manually closed. +11ms
ioredis:redis status[172.18.0.4:8002]: close -> end +3ms
ioredis:cluster:connectionPool Remove 172.18.0.4:8002 from the pool +7ms
ioredis:cluster:connectionPool Disconnect 172.18.0.5:8003 because the node does not hold any slot +1ms
ioredis:redis status[172.18.0.5:8003]: wait -> close +6ms
ioredis:connection skip reconnecting since the connection is manually closed. +9ms
ioredis:redis status[172.18.0.5:8003]: close -> end +3ms
ioredis:cluster:connectionPool Remove 172.18.0.5:8003 from the pool +6ms
ioredis:cluster status: disconnecting -> close +41ms
ioredis:cluster status: close -> close +3ms
ioredis:cluster status: close -> close +2ms
ioredis:cluster status: close -> close +2ms
ioredis:cluster status: close -> close +1ms
ioredis:cluster status: close -> reconnecting +1ms
ioredis:cluster Cluster is disconnected. Retrying after 108ms +109ms
ioredis:cluster status: reconnecting -> connecting +2ms
ioredis:cluster:connectionPool Reset with [ { port: 8000, host: '127.0.0.1', password: '123' },
ioredis:cluster:connectionPool { port: 8001, host: '127.0.0.1', password: '123' },
ioredis:cluster:connectionPool { port: 8001, host: '127.0.0.1', password: '123' } ] +126ms
ioredis:cluster:connectionPool Connecting to 127.0.0.1:8000 as master +16ms
ioredis:redis status[127.0.0.1:8000]: [empty] -> wait +147ms
ioredis:cluster:connectionPool Connecting to 127.0.0.1:8001 as master +8ms
ioredis:redis status[127.0.0.1:8001]: [empty] -> wait +6ms
ioredis:cluster getting slot cache from 127.0.0.1:8000 +33ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: [empty] -> wait +5ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: wait -> connecting +3ms
ioredis:redis queue command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +2ms
ioredis:cluster:subscriber selected a subscriber 127.0.0.1:8000 +203ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterSubscriber)]: [empty] -> wait +4ms
ioredis:cluster:subscriber started +7ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: connecting -> connect +10ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> auth([ '123' ]) +1ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: connect -> ready +2ms
ioredis:connection set the connection name [ioredisClusterRefresher] +183ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> client([ 'setname', 'ioredisClusterRefresher' ]) +3ms
ioredis:connection send 1 commands in offline queue +4ms
ioredis:redis write command[127.0.0.1:8000 (ioredisClusterRefresher)]: 0 -> cluster([ 'slots' ]) +5ms
[WARN] Redis server does not require a password, but a password was supplied.
ioredis:cluster cluster slots result count: 3 +39ms
ioredis:cluster cluster slots result [0]: slots 0~5460 served by 172.18.0.2:8000,172.18.0.6:8004 +4ms
ioredis:cluster cluster slots result [1]: slots 5461~10922 served by 172.18.0.3:8001,172.18.0.7:8005 +2ms
ioredis:cluster cluster slots result [2]: slots 10923~16383 served by 172.18.0.4:8002,172.18.0.5:8003 +1ms
ioredis:cluster:connectionPool Reset with [ { host: '172.18.0.2', port: 8000, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.6', port: 8004, readOnly: true },
ioredis:cluster:connectionPool { host: '172.18.0.3', port: 8001, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.7', port: 8005, readOnly: true },
ioredis:cluster:connectionPool { host: '172.18.0.4', port: 8002, readOnly: false },
ioredis:cluster:connectionPool { host: '172.18.0.5', port: 8003, readOnly: true } ] +53ms
ioredis:cluster:connectionPool Disconnect 127.0.0.1:8000 because the node does not hold any slot +7ms
ioredis:redis status[127.0.0.1:8000]: wait -> close +26ms
ioredis:connection skip reconnecting since the connection is manually closed. +29ms
ioredis:redis status[127.0.0.1:8000]: close -> end +3ms
ioredis:cluster:connectionPool Remove 127.0.0.1:8000 from the pool +7ms
ioredis:cluster:connectionPool Disconnect 127.0.0.1:8001 because the node does not hold any slot +1ms
ioredis:redis status[127.0.0.1:8001]: wait -> close +3ms
ioredis:connection skip reconnecting since the connection is manually closed. +6ms
ioredis:redis status[127.0.0.1:8001]: close -> end +2ms
ioredis:cluster:connectionPool Remove 127.0.0.1:8001 from the pool +7ms
ioredis:cluster:connectionPool Connecting to 172.18.0.2:8000 as master +1ms
ioredis:redis status[172.18.0.2:8000]: [empty] -> wait +7ms
ioredis:cluster:connectionPool Connecting to 172.18.0.6:8004 as slave +3ms
ioredis:redis status[172.18.0.6:8004]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.3:8001 as master +2ms
ioredis:redis status[172.18.0.3:8001]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.7:8005 as slave +3ms
ioredis:redis status[172.18.0.7:8005]: [empty] -> wait +4ms
ioredis:cluster:connectionPool Connecting to 172.18.0.4:8002 as master +3ms
ioredis:redis status[172.18.0.4:8002]: [empty] -> wait +2ms
ioredis:cluster:connectionPool Connecting to 172.18.0.5:8003 as slave +2ms
ioredis:redis status[172.18.0.5:8003]: [empty] -> wait +3ms
ioredis:cluster status: connecting -> connect +42ms
ioredis:redis status[172.18.0.3:8001]: wait -> connecting +3ms
ioredis:redis queue command[172.18.0.3:8001]: 0 -> cluster([ 'info' ]) +1ms
ioredis:cluster:subscriber subscriber has left, selecting a new one... +76ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterSubscriber)]: wait -> close +3ms
ioredis:connection skip reconnecting since the connection is manually closed. +29ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterSubscriber)]: close -> end +2ms
ioredis:cluster:subscriber selected a subscriber 172.18.0.7:8005 +4ms
ioredis:redis status[172.18.0.7:8005 (ioredisClusterSubscriber)]: [empty] -> wait +2ms
redis was connected!
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: ready -> close +6ms
ioredis:connection skip reconnecting since the connection is manually closed. +10ms
ioredis:redis status[127.0.0.1:8000 (ioredisClusterRefresher)]: close -> end +2ms
still have this issue in 4.16.3 @luin
Most helpful comment
Sure, this code produces several connect events maybe 10% or 20% of the time on 4.0.0 ( tested a few dozen times ) and only one event on 3.2.0 ( same amount of tries ) :