mirror of
https://github.com/redis/go-redis.git
synced 2025-07-28 06:42:00 +03:00
fix: Ring.Pipelined return dial timeout error (#3403)
* [ISSUE-3402]: Ring.Pipelined return dial timeout error * review fixes --------- Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
This commit is contained in:
16
ring.go
16
ring.go
@ -798,6 +798,8 @@ func (c *Ring) generalProcessPipeline(
|
||||
}
|
||||
|
||||
var wg sync.WaitGroup
|
||||
errs := make(chan error, len(cmdsMap))
|
||||
|
||||
for hash, cmds := range cmdsMap {
|
||||
wg.Add(1)
|
||||
go func(hash string, cmds []Cmder) {
|
||||
@ -810,16 +812,24 @@ func (c *Ring) generalProcessPipeline(
|
||||
return
|
||||
}
|
||||
|
||||
hook := shard.Client.processPipelineHook
|
||||
if tx {
|
||||
cmds = wrapMultiExec(ctx, cmds)
|
||||
_ = shard.Client.processTxPipelineHook(ctx, cmds)
|
||||
} else {
|
||||
_ = shard.Client.processPipelineHook(ctx, cmds)
|
||||
hook = shard.Client.processTxPipelineHook
|
||||
}
|
||||
|
||||
if err = hook(ctx, cmds); err != nil {
|
||||
errs <- err
|
||||
}
|
||||
}(hash, cmds)
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
close(errs)
|
||||
|
||||
if err := <-errs; err != nil {
|
||||
return err
|
||||
}
|
||||
return cmdsFirstErr(cmds)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user