From 3c2f5bda231ad281ed7343769a3410692c59aca8 Mon Sep 17 00:00:00 2001 From: Tarak Ben Youssef Date: Mon, 12 Jun 2023 21:12:58 -0600 Subject: [PATCH] fix logic change in identity list sample --- model/flow/identity.go | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/model/flow/identity.go b/model/flow/identity.go index 7127858a379..c44c394cb06 100644 --- a/model/flow/identity.go +++ b/model/flow/identity.go @@ -466,16 +466,15 @@ func (il IdentityList) Sample(size uint) (IdentityList, error) { n := uint(len(il)) dup := make([]*Identity, 0, n) dup = append(dup, il...) - // if sample size is greater than total size, return all the elements - if n <= size { - return dup, nil + if n < size { + size = n } swap := func(i, j uint) { dup[i], dup[j] = dup[j], dup[i] } err := rand.Samples(n, size, swap) if err != nil { - return nil, fmt.Errorf("failed to generate randomness: %w", err) + return nil, fmt.Errorf("failed to sample identity list: %w", err) } return dup[:size], nil } @@ -483,17 +482,7 @@ func (il IdentityList) Sample(size uint) (IdentityList, error) { // Shuffle randomly shuffles the identity list (non-deterministic), // and returns the shuffled list without modifying the receiver. func (il IdentityList) Shuffle() (IdentityList, error) { - n := uint(len(il)) - dup := make([]*Identity, 0, n) - dup = append(dup, il...) - swap := func(i, j uint) { - dup[i], dup[j] = dup[j], dup[i] - } - err := rand.Shuffle(n, swap) - if err != nil { - return nil, fmt.Errorf("failed to generate randomness: %w", err) - } - return dup, nil + return il.Sample(uint(len(il))) } // SamplePct returns a random sample from the receiver identity list. The