@@ -263,8 +263,17 @@ func parseKeyspaceInfo(keyspaceInfo string) ([]uint8, error) {
263263return dbs , nil
264264}
265265
266- func getDBIndexes (redisURL string ) ([]uint8 , error ) {
267- client , err := radix .NewPool ("tcp" , redisURL , 1 )
266+ func getDBIndexes (redisURL string , redisPassword string , tlsHandler * TlsHandler ) ([]uint8 , error ) {
267+ customConnFunc := func (network , addr string ) (radix.Conn , error ) {
268+ dialOpts , err := redisDialOpts (redisPassword , tlsHandler , nil )
269+ if err != nil {
270+ return nil , err
271+ }
272+
273+ return radix .Dial (network , addr , dialOpts ... )
274+ }
275+
276+ client , err := radix .NewPool ("tcp" , redisURL , 1 , radix .PoolConnFunc (customConnFunc ))
268277if err != nil {
269278return nil , err
270279}
@@ -331,7 +340,7 @@ func RedisURL(redisHost string, redisPort string) string {
331340return fmt .Sprintf ("redis://%s:%s" , redisHost , redisPort )
332341}
333342
334- func redisDialOpts (redisPassword string , tlsHandler * TlsHandler , db uint8 ) ([]radix.DialOpt , error ) {
343+ func redisDialOpts (redisPassword string , tlsHandler * TlsHandler , db * uint8 ) ([]radix.DialOpt , error ) {
335344dialOpts := []radix.DialOpt {
336345radix .DialTimeout (5 * time .Minute ),
337346}
@@ -346,7 +355,9 @@ func redisDialOpts(redisPassword string, tlsHandler *TlsHandler, db uint8) ([]ra
346355dialOpts = append (dialOpts , radix .DialUseTLS (tlsCfg ))
347356}
348357
349- dialOpts = append (dialOpts , radix .DialSelectDB (int (db )))
358+ if db != nil {
359+ dialOpts = append (dialOpts , radix .DialSelectDB (int (* db )))
360+ }
350361
351362return dialOpts , nil
352363}
@@ -371,7 +382,7 @@ func DumpDB(redisHost string, redisPort int, redisPassword string, tlsHandler *T
371382
372383redisURL := RedisURL (redisHost , fmt .Sprint (redisPort ))
373384customConnFunc := func (network , addr string ) (radix.Conn , error ) {
374- dialOpts , err := redisDialOpts (redisPassword , tlsHandler , * db )
385+ dialOpts , err := redisDialOpts (redisPassword , tlsHandler , db )
375386if err != nil {
376387return nil , err
377388}
@@ -411,7 +422,7 @@ func DumpDB(redisHost string, redisPort int, redisPassword string, tlsHandler *T
411422// are regularly sent to the channel progressNotifications
412423func DumpServer (redisHost string , redisPort int , redisPassword string , tlsHandler * TlsHandler , filter string , nWorkers int , withTTL bool , batchSize int , noscan bool , logger * log.Logger , serializer func ([]string ) string , progress chan <- ProgressNotification ) error {
413424url := RedisURL (redisHost , fmt .Sprint (redisPort ))
414- dbs , err := getDBIndexes (url )
425+ dbs , err := getDBIndexes (url , redisPassword , tlsHandler )
415426if err != nil {
416427return err
417428}
0 commit comments