From 47764696ce183390a425841ffd4f8c84f05321de Mon Sep 17 00:00:00 2001 From: Manu NALEPA Date: Thu, 16 Oct 2025 23:13:11 +0200 Subject: [PATCH] `randomPeer`: Return if the context is cancelled when waiting for peers. (#15876) * `randomPeer`: Return if the context is cancelled when waiting for peers. * `randomPeer`: Refactor to reduce indentation. --- beacon-chain/sync/data_column_sidecars.go | 24 ++++++++++++----------- changelog/manu-random-peer.md | 2 ++ 2 files changed, 15 insertions(+), 11 deletions(-) create mode 100644 changelog/manu-random-peer.md diff --git a/beacon-chain/sync/data_column_sidecars.go b/beacon-chain/sync/data_column_sidecars.go index d9b8715b23..1cdebb65e3 100644 --- a/beacon-chain/sync/data_column_sidecars.go +++ b/beacon-chain/sync/data_column_sidecars.go @@ -1122,19 +1122,21 @@ func randomPeer( } } - slices.Sort(nonRateLimitedPeers) - - if len(nonRateLimitedPeers) == 0 { - log.WithFields(logrus.Fields{ - "peerCount": peerCount, - "delay": waitPeriod, - }).Debug("Waiting for a peer with enough bandwidth for data column sidecars") - time.Sleep(waitPeriod) - continue + if len(nonRateLimitedPeers) > 0 { + slices.Sort(nonRateLimitedPeers) + randomIndex := randomSource.Intn(len(nonRateLimitedPeers)) + return nonRateLimitedPeers[randomIndex], nil } - randomIndex := randomSource.Intn(len(nonRateLimitedPeers)) - return nonRateLimitedPeers[randomIndex], nil + log.WithFields(logrus.Fields{ + "peerCount": peerCount, + "delay": waitPeriod, + }).Debug("Waiting for a peer with enough bandwidth for data column sidecars") + + select { + case <-time.After(waitPeriod): + case <-ctx.Done(): + } } return "", ctx.Err() diff --git a/changelog/manu-random-peer.md b/changelog/manu-random-peer.md new file mode 100644 index 0000000000..eb37eed1b3 --- /dev/null +++ b/changelog/manu-random-peer.md @@ -0,0 +1,2 @@ +### Fixed +- `randomPeer`: Return if the context is cancelled when waiting for peers. \ No newline at end of file