From 19a7740938523cdd07faf5c8c95951fb81626d53 Mon Sep 17 00:00:00 2001 From: qinglin89 <316032931@qq.com> Date: Wed, 22 Mar 2023 20:16:27 +0800 Subject: [PATCH 1/3] consnesus/parlia: abort sealing when imported same height as canonical --- consensus/parlia/parlia.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index b1abc1221f..18ef57224c 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -891,6 +891,10 @@ func (p *Parlia) Seal(chain consensus.ChainHeaderReader, block *types.Block, res log.Info("Received block process finished, abort block seal") return case <-time.After(time.Duration(processBackOffTime) * time.Second): + if chain.CurrentHeader().Number.Uint64() == header.Number.Uint64() { + log.Info("Process backoff time exhausted, and current header has updated to abort this seal") + return + } log.Info("Process backoff time exhausted, start to seal block") } } From daeebc8bb9e4c26db9bd378d880a89d2166a417b Mon Sep 17 00:00:00 2001 From: qinglin89 <316032931@qq.com> Date: Tue, 28 Mar 2023 15:15:56 +0800 Subject: [PATCH 2/3] consensus/parlia: abort sealing when imported more than one block --- consensus/parlia/parlia.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index 18ef57224c..40f674769b 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -891,7 +891,7 @@ func (p *Parlia) Seal(chain consensus.ChainHeaderReader, block *types.Block, res log.Info("Received block process finished, abort block seal") return case <-time.After(time.Duration(processBackOffTime) * time.Second): - if chain.CurrentHeader().Number.Uint64() == header.Number.Uint64() { + if number := header.Number.Uint64(); chain.CurrentHeader().Number.Uint64() >= number && chain.GetHeaderByNumber(number-1).Hash() == (header.ParentHash) { log.Info("Process backoff time exhausted, and current header has updated to abort this seal") return } From 223bb323145fbbfad904e853e19ec564086e4de0 Mon Sep 17 00:00:00 2001 From: qinglin89 <316032931@qq.com> Date: Wed, 29 Mar 2023 12:18:19 +0800 Subject: [PATCH 3/3] consensus/parlia: no need to check parentHash --- consensus/parlia/parlia.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index 40f674769b..6cdaa2b3f5 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -891,7 +891,7 @@ func (p *Parlia) Seal(chain consensus.ChainHeaderReader, block *types.Block, res log.Info("Received block process finished, abort block seal") return case <-time.After(time.Duration(processBackOffTime) * time.Second): - if number := header.Number.Uint64(); chain.CurrentHeader().Number.Uint64() >= number && chain.GetHeaderByNumber(number-1).Hash() == (header.ParentHash) { + if chain.CurrentHeader().Number.Uint64() >= header.Number.Uint64() { log.Info("Process backoff time exhausted, and current header has updated to abort this seal") return }