Skip to content

Remove Recommit and Fix Parent Actual Time track on Prepare#1938

Merged
lucca30 merged 3 commits intodevelopfrom
lmartins/fix-wait-on-prepare
Dec 16, 2025
Merged

Remove Recommit and Fix Parent Actual Time track on Prepare#1938
lucca30 merged 3 commits intodevelopfrom
lmartins/fix-wait-on-prepare

Conversation

@lucca30
Copy link
Copy Markdown
Contributor

@lucca30 lucca30 commented Dec 16, 2025

Description

This PR disables the recommit mechanism and improves how the parent header ActualTime is tracked. Recommit was removed because our current block production/plotting time already consumes most of the block interval, making reprocessing the same block wasteful and counter-productive, as those resources are better reserved for the next block. In addition, the parent ActualTime is now derived from the correct parent block (by hash) when available, instead of assuming the last locally processed block was always the parent. This fixes incorrect timestamp progression and avoids longer-than-expected waiting slots, especially when Prepare is invoked multiple times for the same block (e.g. during recommits).

Changes

  • Bugfix (non-breaking change that solves an issue)
  • Hotfix (change that solves an urgent issue, and requires immediate attention)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (change that is not backwards-compatible and/or changes current functionality)
  • Changes only for a subset of nodes

Copy link
Copy Markdown
Member

@kamuikatsurgi kamuikatsurgi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

smol nits

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR disables the recommit mechanism in the miner and fixes how parent block ActualTime is tracked in the Bor consensus engine. The recommit feature was disabled because current block production time already consumes most of the block interval, making reprocessing wasteful. The parent ActualTime tracking was improved to use a hash-based cache lookup instead of relying on the assumption that the last locally processed block was always the parent, fixing timestamp progression issues especially during multiple Prepare invocations for the same block.

Key Changes:

  • Disables the recommit timer mechanism in the miner's work loop by adding a continue statement
  • Replaces lastMinedBlockTime field with parentActualTimeCache (LRU cache) in Bor consensus engine
  • Updates Prepare() to look up parent ActualTime by ParentHash from the cache instead of using a single shared timestamp
  • Updates FinalizeAndAssemble() to store the block's ActualTime in the cache keyed by block hash

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
miner/worker.go Disables the recommit mechanism in the work loop by replacing the timer case logic with a continue statement and commenting out the original recommit code
consensus/bor/bor.go Replaces the lastMinedBlockTime field with a hash-based LRU cache (parentActualTimeCache) to properly track parent block ActualTime, updating both Prepare() to retrieve from cache and FinalizeAndAssemble() to store to cache

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@marcello33
Copy link
Copy Markdown
Collaborator

There seems to be some compilation errors for tests due to these changes. Other than that - and the suggestions from @kamuikatsurgi - LGTM, thanks

@sonarqubecloud
Copy link
Copy Markdown

@lucca30 lucca30 merged commit 6186543 into develop Dec 16, 2025
15 of 17 checks passed
lucca30 added a commit that referenced this pull request Dec 17, 2025
* Revert recorded write operations when tx fails

* Revert selfdestruct on failure

* Added test for selfdestruct revert write

* Add HasSelfDestructed check when applying to final db

* p2p: added functionality to temporarily ban peers to prevent connections (#1922)

* p2p: added functionality to temporarily ban peers to prevent connections

* p2p: cleanup

* chore: bump kurtosis-pos (#1923)

* chore: bump kurtosis-pos

* chore: nits

* chore: install go

* fix(miner): delete pending task after successful block sealing to prevent node stall (#1929)

* fix(miner): delete pending task after successful block sealing to prevent node stall

* chore: nits

* chore: set staleThreshold to 0

* chore: update comment

* Remove Recommit and Fix Parent Actual Time track on Prepare (#1938)

* remove recommit and track parent actual time

* applying pr comments

* fix actual time cache store place

* chore: update deps (#1939)

chore: update deps

* bump version

* bump version

* stable version

---------

Co-authored-by: Angel Valkov <avalkov@polygon.technology>
Co-authored-by: Marcello Ardizzone <marcelloardizzone@hotmail.it>
Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>
Co-authored-by: Krishang <109511742+kamuikatsurgi@users.noreply.github.com>
Co-authored-by: kamuikatsurgi <shahkrishang11@gmail.com>
@lucca30 lucca30 mentioned this pull request Dec 17, 2025
18 tasks
pratikspatil024 added a commit that referenced this pull request Dec 18, 2025
* bump version

* stable version

* V2.5.6 candidate (#1941)

* Revert recorded write operations when tx fails

* Revert selfdestruct on failure

* Added test for selfdestruct revert write

* Add HasSelfDestructed check when applying to final db

* p2p: added functionality to temporarily ban peers to prevent connections (#1922)

* p2p: added functionality to temporarily ban peers to prevent connections

* p2p: cleanup

* chore: bump kurtosis-pos (#1923)

* chore: bump kurtosis-pos

* chore: nits

* chore: install go

* fix(miner): delete pending task after successful block sealing to prevent node stall (#1929)

* fix(miner): delete pending task after successful block sealing to prevent node stall

* chore: nits

* chore: set staleThreshold to 0

* chore: update comment

* Remove Recommit and Fix Parent Actual Time track on Prepare (#1938)

* remove recommit and track parent actual time

* applying pr comments

* fix actual time cache store place

* chore: update deps (#1939)

chore: update deps

* bump version

* bump version

* stable version

---------

Co-authored-by: Angel Valkov <avalkov@polygon.technology>
Co-authored-by: Marcello Ardizzone <marcelloardizzone@hotmail.it>
Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>
Co-authored-by: Krishang <109511742+kamuikatsurgi@users.noreply.github.com>
Co-authored-by: kamuikatsurgi <shahkrishang11@gmail.com>

* Unstuck

* Added block range check

* bump version 2.5.7

* bump to 2.5.6-beta3

---------

Co-authored-by: Lucca Martins <lucca_martins30@yahoo.com.br>
Co-authored-by: Marcello Ardizzone <marcelloardizzone@hotmail.it>
Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>
Co-authored-by: Krishang <109511742+kamuikatsurgi@users.noreply.github.com>
Co-authored-by: kamuikatsurgi <shahkrishang11@gmail.com>
kamuikatsurgi added a commit that referenced this pull request Dec 18, 2025
…block building work (#1943)

* bump version

* stable version

* V2.5.6 candidate (#1941)

* Revert recorded write operations when tx fails

* Revert selfdestruct on failure

* Added test for selfdestruct revert write

* Add HasSelfDestructed check when applying to final db

* p2p: added functionality to temporarily ban peers to prevent connections (#1922)

* p2p: added functionality to temporarily ban peers to prevent connections

* p2p: cleanup

* chore: bump kurtosis-pos (#1923)

* chore: bump kurtosis-pos

* chore: nits

* chore: install go

* fix(miner): delete pending task after successful block sealing to prevent node stall (#1929)

* fix(miner): delete pending task after successful block sealing to prevent node stall

* chore: nits

* chore: set staleThreshold to 0

* chore: update comment

* Remove Recommit and Fix Parent Actual Time track on Prepare (#1938)

* remove recommit and track parent actual time

* applying pr comments

* fix actual time cache store place

* chore: update deps (#1939)

chore: update deps

* bump version

* bump version

* stable version

---------

Co-authored-by: Angel Valkov <avalkov@polygon.technology>
Co-authored-by: Marcello Ardizzone <marcelloardizzone@hotmail.it>
Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>
Co-authored-by: Krishang <109511742+kamuikatsurgi@users.noreply.github.com>
Co-authored-by: kamuikatsurgi <shahkrishang11@gmail.com>

* fix: add pendingWorkBlock to prevent duplicate work

* fix: if check

* nit: comment

* chore: bump version

* chore: add pending work check in new head event as well

* chore: read veblop timeout

---------

Co-authored-by: Lucca Martins <lucca_martins30@yahoo.com.br>
Co-authored-by: Angel Valkov <avalkov@polygon.technology>
Co-authored-by: Marcello Ardizzone <marcelloardizzone@hotmail.it>
Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>
pratikspatil024 added a commit that referenced this pull request Jan 8, 2026
* bump version

* Revert "V2.5.6 candidate (#1941)"

This reverts commit 85b5ef7.

* fix: ignore invalid signer error for specific block range (#1944)

* bump version

* stable version

* V2.5.6 candidate (#1941)

* Revert recorded write operations when tx fails

* Revert selfdestruct on failure

* Added test for selfdestruct revert write

* Add HasSelfDestructed check when applying to final db

* p2p: added functionality to temporarily ban peers to prevent connections (#1922)

* p2p: added functionality to temporarily ban peers to prevent connections

* p2p: cleanup

* chore: bump kurtosis-pos (#1923)

* chore: bump kurtosis-pos

* chore: nits

* chore: install go

* fix(miner): delete pending task after successful block sealing to prevent node stall (#1929)

* fix(miner): delete pending task after successful block sealing to prevent node stall

* chore: nits

* chore: set staleThreshold to 0

* chore: update comment

* Remove Recommit and Fix Parent Actual Time track on Prepare (#1938)

* remove recommit and track parent actual time

* applying pr comments

* fix actual time cache store place

* chore: update deps (#1939)

chore: update deps

* bump version

* bump version

* stable version

---------

Co-authored-by: Angel Valkov <avalkov@polygon.technology>
Co-authored-by: Marcello Ardizzone <marcelloardizzone@hotmail.it>
Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>
Co-authored-by: Krishang <109511742+kamuikatsurgi@users.noreply.github.com>
Co-authored-by: kamuikatsurgi <shahkrishang11@gmail.com>

* Unstuck

* Added block range check

* bump version 2.5.7

* bump to 2.5.6-beta3

---------

Co-authored-by: Lucca Martins <lucca_martins30@yahoo.com.br>
Co-authored-by: Marcello Ardizzone <marcelloardizzone@hotmail.it>
Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>
Co-authored-by: Krishang <109511742+kamuikatsurgi@users.noreply.github.com>
Co-authored-by: kamuikatsurgi <shahkrishang11@gmail.com>

* fix(miner): track pending work using block number to avoid duplicate block building work (#1943)

* bump version

* stable version

* V2.5.6 candidate (#1941)

* Revert recorded write operations when tx fails

* Revert selfdestruct on failure

* Added test for selfdestruct revert write

* Add HasSelfDestructed check when applying to final db

* p2p: added functionality to temporarily ban peers to prevent connections (#1922)

* p2p: added functionality to temporarily ban peers to prevent connections

* p2p: cleanup

* chore: bump kurtosis-pos (#1923)

* chore: bump kurtosis-pos

* chore: nits

* chore: install go

* fix(miner): delete pending task after successful block sealing to prevent node stall (#1929)

* fix(miner): delete pending task after successful block sealing to prevent node stall

* chore: nits

* chore: set staleThreshold to 0

* chore: update comment

* Remove Recommit and Fix Parent Actual Time track on Prepare (#1938)

* remove recommit and track parent actual time

* applying pr comments

* fix actual time cache store place

* chore: update deps (#1939)

chore: update deps

* bump version

* bump version

* stable version

---------

Co-authored-by: Angel Valkov <avalkov@polygon.technology>
Co-authored-by: Marcello Ardizzone <marcelloardizzone@hotmail.it>
Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>
Co-authored-by: Krishang <109511742+kamuikatsurgi@users.noreply.github.com>
Co-authored-by: kamuikatsurgi <shahkrishang11@gmail.com>

* fix: add pendingWorkBlock to prevent duplicate work

* fix: if check

* nit: comment

* chore: bump version

* chore: add pending work check in new head event as well

* chore: read veblop timeout

---------

Co-authored-by: Lucca Martins <lucca_martins30@yahoo.com.br>
Co-authored-by: Angel Valkov <avalkov@polygon.technology>
Co-authored-by: Marcello Ardizzone <marcelloardizzone@hotmail.it>
Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>

* chore: bump version to v2.5.6-beta4

* fix(rpc): maxFeePerGas and maxPriorityFeePerGas for StateSyncTx type (#1952)

* Fix missing chain validator service setup (#1957)

* eth/protocols/wit: made protocol version consistent (#1940)

* eth: add missing checker initialization

* core: add log when verifyPendingHeaders is skipped

* Revert "eth/protocols/wit: made protocol version consistent (#1940)"

This reverts commit c98a00e.

---------

Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>

* fix(api): traceBlock (#1959)

* Revert "Merge branch 'master' into v2.5.6-candidate"

This reverts commit 809b189, reversing
changes made to 1dbae9d.

* version bump to v2.5.6-beta5

* Dandeli HF: modify block gas target calculations (#1968)

* remove baseFee validation after hf

* remove logs

* params, consensus: use target gas percentage for base fee calculations

* cleanup

* add comments

* consensus/misc/eip1559: add tests for untitled HF

* typo

* test fixes

* update HF name to dandeli

* simplify

* update gas target to 65%, fix tests

* update comment

* fix tests

* fix tests

* fix tests

* schedule dandeli HF for amoy at block 31890000

* fix lint

* add missing madhugiripro HF in amoy genesis

---------

Co-authored-by: Lucca Martins <lucca_martins30@yahoo.com.br>

* params: bump version to v2.5.6-beta6

* Update DandeliBlock HF for mainnet and bump version

---------

Co-authored-by: Lucca Martins <lucca_martins30@yahoo.com.br>
Co-authored-by: Angel Valkov <avalkov@polygon.technology>
Co-authored-by: Marcello Ardizzone <marcelloardizzone@hotmail.it>
Co-authored-by: Krishang <109511742+kamuikatsurgi@users.noreply.github.com>
Co-authored-by: kamuikatsurgi <shahkrishang11@gmail.com>
Co-authored-by: Raneet Debnath <35629432+Raneet10@users.noreply.github.com>
Co-authored-by: Manav Darji <manavdarji.india@gmail.com>
Co-authored-by: Jerry <jerrycgh@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants