besu: Bonsai trie initial sync fails with `World State Root does not match expected value` (testing only)
Description
With an initial mainnet fast sync using bonsai tries, the sync fails with this error message:
eth1_1 | 2021-05-05 01:40:17.950+00:00 | EthScheduler-Services-4 (requestCompleteTask) | INFO | CompleteTaskStep | Downloaded 883300000 world state nodes. At least 82 nodes remaining.
eth1_1 | 2021-05-05 01:40:47.085+00:00 | EthScheduler-Services-4 (requestCompleteTask) | INFO | DefaultSynchronizer | Fast sync completed successfully with pivot block 12358887
eth1_1 | 2021-05-05 01:40:47.091+00:00 | EthScheduler-Services-4 (requestCompleteTask) | INFO | FullSyncDownloader | Starting full sync.
eth1_1 | 2021-05-05 01:40:47.099+00:00 | EthScheduler-Services-4 (requestCompleteTask) | INFO | WorldDownloadState | Finished downloading world state from peers
eth1_1 | 2021-05-05 01:40:47.570+00:00 | nioEventLoopGroup-3-1 | INFO | SyncTargetManager | Found common ancestor with peer Peer 0x017cb4270271491285... at block 12358887
eth1_1 | 2021-05-05 01:41:05.053+00:00 | EthScheduler-Services-34 (importBlock) | ERROR | PipelineChainDownloader | Chain download failed. Restarting after short delay.
eth1_1 | java.util.concurrent.CompletionException: java.lang.RuntimeException: World State Root does not match expected value, header 0xec071e09803825ae0438af2fd562ef168f7a301df7e4b4867f1108c125a2742d calculated 0xc4374cf503d80e0ec722776b55e7f505c290bd55ef2cbbcf78fc1847a0b691b4
eth1_1 | at java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:367)
eth1_1 | at java.base/java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:376)
eth1_1 | at java.base/java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:1093)
eth1_1 | at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
eth1_1 | at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2152)
eth1_1 | at org.hyperledger.besu.services.pipeline.Pipeline.abort(Pipeline.java:179)
eth1_1 | at org.hyperledger.besu.services.pipeline.Pipeline.lambda$runWithErrorHandling$3(Pipeline.java:158)
eth1_1 | at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
eth1_1 | at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
eth1_1 | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
eth1_1 | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
eth1_1 | at java.base/java.lang.Thread.run(Thread.java:832)
eth1_1 | Caused by: java.lang.RuntimeException: World State Root does not match expected value, header 0xec071e09803825ae0438af2fd562ef168f7a301df7e4b4867f1108c125a2742d calculated 0xc4374cf503d80e0ec722776b55e7f505c290bd55ef2cbbcf78fc1847a0b691b4
I understand Bonsai tries are not production ready, this sync was done for testing purposes only.
Versions (Add all that apply)
- Software version: besu/v21.1.6-dev-425db2a9/linux-x86_64/oracle_openjdk-java-15
- Java version: 15
- OS Name & Version: Ubuntu 20.04
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 17 (8 by maintainers)
Hi, we modified the fix and did some tests. This new fix is fine and the tests were green. https://github.com/hyperledger/besu/pull/2934
We merged . Feel free to tell us if you still have an issue
Thanks for your help, we just added a fix to resolve this issue. Feel free to reopen the ticket if you have the issue again
It is the new block that Besu try to import after the fastsync. So obviously if we stop the fastsync in the middle the data in database are corrupted and we are not able to validate new blocks. I’ll try to investigate this. Thanks a lot for all this informations 😃