mirror of
https://github.com/redis/go-redis.git
synced 2025-07-31 05:04:23 +03:00
fix: fixes ring.SetAddrs and rebalance race (#2283)
* fix: fixes ring.SetAddrs and rebalance race
The change ensures atomic update of `c.hash` and `c.shards`.
`BenchmarkRingRebalanceLocked` shows rebalance latency:
```
go test . -run=NONE -bench=BenchmarkRingRebalanceLocked -v -count=10 | benchstat /dev/stdin
name time/op
RingRebalanceLocked-8 8.50µs ±14%
```
(Note: it essentially reverts a46b053aa6
)
This commit is contained in:
committed by
GitHub
parent
bbff4dd5dc
commit
d83436b321
@ -95,9 +95,6 @@ func GetSlavesAddrByName(ctx context.Context, c *SentinelClient, name string) []
|
||||
}
|
||||
|
||||
func (c *Ring) ShardByName(name string) *ringShard {
|
||||
return c.sharding.ShardByName(name)
|
||||
}
|
||||
|
||||
func (c *ringSharding) ShardByName(name string) *ringShard {
|
||||
return c.shards.m[name]
|
||||
shard, _ := c.sharding.GetByName(name)
|
||||
return shard
|
||||
}
|
||||
|
Reference in New Issue
Block a user