From 7967937b52ed656be9775eb324f544da5c3340f8 Mon Sep 17 00:00:00 2001 From: rfyiamcool Date: Fri, 1 Mar 2024 11:22:06 +0800 Subject: [PATCH 1/2] fix: race slice for list of ring client Signed-off-by: rfyiamcool --- ring.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ring.go b/ring.go index 4ae00542ba..66396ae28d 100644 --- a/ring.go +++ b/ring.go @@ -339,7 +339,8 @@ func (c *ringSharding) List() []*ringShard { c.mu.RLock() if !c.closed { - list = c.shards.list + list = make([]*ringShard, len(c.shards.list)) + copy(c.shards.list, list) } c.mu.RUnlock() From 9ce1ab866e0d0035457c60dac7b73e0285be13a1 Mon Sep 17 00:00:00 2001 From: "fengyun.rui" Date: Sat, 15 Feb 2025 15:04:40 +0800 Subject: [PATCH 2/2] fix: copy wrong list Co-authored-by: Nedyalko Dyakov --- ring.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ring.go b/ring.go index c99954cdf7..06a26020a8 100644 --- a/ring.go +++ b/ring.go @@ -342,7 +342,7 @@ func (c *ringSharding) List() []*ringShard { c.mu.RLock() if !c.closed { list = make([]*ringShard, len(c.shards.list)) - copy(c.shards.list, list) + copy(list, c.shards.list) } c.mu.RUnlock()