From b9919a572ad6574790a37adde07b255591cc34a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20Faruk=20Irmak?= Date: Mon, 27 May 2024 19:44:40 +0300 Subject: [PATCH] fix: make consensus engine wait for a bit before giving up on worker (#774) and if it happens despite the wait, let worker retry --- consensus/clique/clique.go | 4 +++- miner/scroll_worker.go | 6 +++++- params/version.go | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/consensus/clique/clique.go b/consensus/clique/clique.go index 8c0505f760de..bd92b525b980 100644 --- a/consensus/clique/clique.go +++ b/consensus/clique/clique.go @@ -648,6 +648,8 @@ func (c *Clique) Seal(chain consensus.ChainHeaderReader, block *types.Block, res // Wait until sealing is terminated or delay timeout. log.Trace("Waiting for slot to sign and propagate", "delay", common.PrettyDuration(delay)) go func() { + defer close(results) + select { case <-stop: return @@ -656,7 +658,7 @@ func (c *Clique) Seal(chain consensus.ChainHeaderReader, block *types.Block, res select { case results <- block.WithSeal(header): - default: + case <-time.After(time.Second): log.Warn("Sealing result is not read by miner", "sealhash", SealHash(header)) } }() diff --git a/miner/scroll_worker.go b/miner/scroll_worker.go index c5614c59810d..9b7a1b63a6a4 100644 --- a/miner/scroll_worker.go +++ b/miner/scroll_worker.go @@ -651,8 +651,12 @@ func (w *worker) commit(res *pipeline.Result) error { if err := w.engine.Seal(w.chain, block, resultCh, stopCh); err != nil { return err } - + // Clique.Seal() will only wait for a second before giving up on us. So make sure there is nothing computational heavy + // or a call that blocks between the call to Seal and the line below block = <-resultCh + if block == nil { + return errors.New("missed seal response from consensus engine") + } // verify the generated block with local consensus engine to make sure everything is as expected if err = w.engine.VerifyHeader(w.chain, block.Header(), true); err != nil { diff --git a/params/version.go b/params/version.go index 145c4bf1b27f..9f991beae3f2 100644 --- a/params/version.go +++ b/params/version.go @@ -24,7 +24,7 @@ import ( const ( VersionMajor = 5 // Major version component of the current release VersionMinor = 3 // Minor version component of the current release - VersionPatch = 23 // Patch version component of the current release + VersionPatch = 24 // Patch version component of the current release VersionMeta = "mainnet" // Version metadata to append to the version string )