From c3204b338d5996c778858a1b6e19a5961dce6599 Mon Sep 17 00:00:00 2001 From: jsvisa Date: Mon, 11 Aug 2025 10:04:49 +0800 Subject: [PATCH] use time.After instead of sleep, incase of goroutine leak Signed-off-by: jsvisa --- core/state/statesize.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/core/state/statesize.go b/core/state/statesize.go index 1871770d5d..d35d32965c 100644 --- a/core/state/statesize.go +++ b/core/state/statesize.go @@ -155,18 +155,19 @@ func (g *StateSizeGenerator) initialize() chan struct{} { LOOP: // Wait for snapshot generator to complete first for { + root, done := g.triedb.SnapshotCompleted() + if done { + g.metrics.Root = root + g.buffered.Root = root + break LOOP + } + select { case <-g.abort: log.Info("State size initialization aborted during snapshot wait") return - default: - root, done := g.triedb.SnapshotCompleted() - if done { - g.metrics.Root = root - g.buffered.Root = root - break LOOP - } - time.Sleep(10 * time.Second) + case <-time.After(10 * time.Second): + // Continue checking for snapshot completion } }