From fd65297676a9798f3c5df994fb8b276e0129b121 Mon Sep 17 00:00:00 2001 From: terence tsao Date: Sun, 26 Oct 2025 12:25:47 -0700 Subject: [PATCH] Proposer timer handling when the context is cancelled in random peer --- beacon-chain/sync/data_column_sidecars.go | 7 ++++++- changelog/ttsao_fix-timer.md | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 changelog/ttsao_fix-timer.md diff --git a/beacon-chain/sync/data_column_sidecars.go b/beacon-chain/sync/data_column_sidecars.go index 1cdebb65e3..548720009f 100644 --- a/beacon-chain/sync/data_column_sidecars.go +++ b/beacon-chain/sync/data_column_sidecars.go @@ -1133,9 +1133,14 @@ func randomPeer( "delay": waitPeriod, }).Debug("Waiting for a peer with enough bandwidth for data column sidecars") + timer := time.NewTimer(waitPeriod) select { - case <-time.After(waitPeriod): + case <-timer.C: + // Timer expired, retry the loop case <-ctx.Done(): + // Context cancelled - stop timer to prevent leak + timer.Stop() + return "", ctx.Err() } } diff --git a/changelog/ttsao_fix-timer.md b/changelog/ttsao_fix-timer.md new file mode 100644 index 0000000000..e4a55cc05a --- /dev/null +++ b/changelog/ttsao_fix-timer.md @@ -0,0 +1,3 @@ +### Changed + +- Replace `time.After()` with `time.NewTimer()` and explicitly stop the timer when the context is cancelled