besu: Mainnet node desyncs: World State Root does not match expected value
Description
Mainnet besu node that was in sync has stopped adding blocks. It is still active and receiving blocks, but throwing them out with a “World State Root does not match expected value” error.
As a side result of this, besu is kicking out all of the peers that disagree with it.
Confirmed that head block is stuck at the point the errors began (head at time of writing is 14833965):
$ # curl -s http://localhost:8545 -X POST -H "Content-Type: application/json" --data '{"method":"eth_getBlockByNumber","params":["latest", true],"id":1,"jsonrpc":"2.0"}'| jq -r '.result.number' | xargs printf '%d\n'
14833808
Acceptance Criteria
Besu should continue to process blocks and build the chain.
Versions (Add all that apply)
$ besu --version
besu/v22.4.0/linux-x86_64/openjdk-java-17
$ java --version
openjdk 17.0.3 2022-04-19
OpenJDK Runtime Environment (build 17.0.3+7-Ubuntu-0ubuntu0.20.04.1)
OpenJDK 64-Bit Server VM (build 17.0.3+7-Ubuntu-0ubuntu0.20.04.1, mixed mode, sharing)
This is using data-storage-format="bonsai"
Logs
The initial error was:
2022-05-24 04:57:07.909+00:00 | EthScheduler-Workers-2 | INFO | PersistBlockTask | Imported #14,833,806 / 125 tx / 0 om / 5,371,865 (17.9%) gas / (0x582cfeb634fc709df209a666ed37d882ad06da4595f091391a2a53c2e4c3be62) in 0.177s. Peers: 30
2022-05-24 04:57:11.122+00:00 | EthScheduler-Workers-1 | INFO | PersistBlockTask | Imported #14,833,807 / 274 tx / 0 om / 29,996,473 (100.0%) gas / (0x4526e1abe05e04857f13296cbfb7b3143fd182ec85141b4b342d44de5d8baf43) in 0.813s. Peers: 30
2022-05-24 04:57:14.045+00:00 | EthScheduler-Workers-2 | INFO | PersistBlockTask | Imported #14,833,808 / 154 tx / 0 om / 11,912,845 (39.7%) gas / (0xb0fb5182a37031d3d747a70ee63c71bee73e613ce07e4bb215cba9df974e4ed1) in 0.300s. Peers: 30
2022-05-24 04:57:36.166+00:00 | EthScheduler-Workers-0 | ERROR | AbstractBlockProcessor | failed persisting block
java.lang.RuntimeException: World State Root does not match expected value, header 0xa6501affc39a24c0c46e70973f9e34b16c6c090d1d7851dba98de0cb51a506c4 calculated 0x6d8c8d327044fd196b3beaa453a403958c717693300b660072a40157512603ab
at org.hyperledger.besu.ethereum.bonsai.BonsaiPersistedWorldState.persist(BonsaiPersistedWorldState.java:264)
at org.hyperledger.besu.ethereum.mainnet.AbstractBlockProcessor.processBlock(AbstractBlockProcessor.java:203)
at org.hyperledger.besu.ethereum.mainnet.AbstractBlockProcessor.processBlock(AbstractBlockProcessor.java:42)
at org.hyperledger.besu.ethereum.mainnet.BlockProcessor.processBlock(BlockProcessor.java:75)
at org.hyperledger.besu.ethereum.MainnetBlockValidator.processBlock(MainnetBlockValidator.java:146)
at org.hyperledger.besu.ethereum.MainnetBlockValidator.validateAndProcessBlock(MainnetBlockValidator.java:100)
at org.hyperledger.besu.ethereum.mainnet.MainnetBlockImporter.importBlock(MainnetBlockImporter.java:44)
at org.hyperledger.besu.ethereum.core.BlockImporter.importBlock(BlockImporter.java:44)
at org.hyperledger.besu.ethereum.eth.sync.tasks.PersistBlockTask.executeTask(PersistBlockTask.java:201)
at org.hyperledger.besu.ethereum.eth.manager.task.AbstractEthTask.executeTaskTimed(AbstractEthTask.java:150)
at org.hyperledger.besu.ethereum.eth.manager.task.AbstractEthTask.run(AbstractEthTask.java:75)
at org.hyperledger.besu.ethereum.eth.sync.BlockPropagationManager.runImportTask(BlockPropagationManager.java:482)
at org.hyperledger.besu.ethereum.eth.sync.BlockPropagationManager.validateAndProcessPendingBlock(BlockPropagationManager.java:463)
at org.hyperledger.besu.ethereum.eth.sync.BlockPropagationManager.lambda$importOrSavePendingBlock$17(BlockPropagationManager.java:451)
at org.hyperledger.besu.util.FutureUtils.propagateResult(FutureUtils.java:97)
at org.hyperledger.besu.ethereum.eth.manager.EthScheduler.lambda$scheduleSyncWorkerTask$0(EthScheduler.java:108)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
2022-05-24 04:57:36.166+00:00 | EthScheduler-Workers-0 | ERROR | MainnetBlockValidator | Error processing block. Block 14833809 (0x15ab57cc5bd28eb54a1bfc45d49e182420b4a8d0222c375b4bc1425072823d7e)
2022-05-24 04:57:36.166+00:00 | EthScheduler-Workers-0 | WARN | BlockPropagationManager | Failed to import announced block 14833809 (0x15ab57cc5bd28eb54a1bfc45d49e182420b4a8d0222c375b4bc1425072823d7e)
2022-05-24 04:57:40.498+00:00 | Timer-0 | INFO | DNSTimerTask | Refreshing DNS records with enrtree://AKA3AM6LPBYEUDMVNU3BSVQJ5AD45Y7YPOHJLEF6W26QOE4VTUDPE@all.mainnet.ethdisco.net
2022-05-24 04:57:40.985+00:00 | nioEventLoopGroup-3-1 | INFO | BlockPropagationManager | Saving announced block 14833810 (0x3fda3e8a703029f6224c588a8dbc672bb2a084d9ecc1bd4e3e5f2837543d7ec8) for future import
2022-05-24 04:57:45.111+00:00 | nioEventLoopGroup-3-1 | INFO | SyncTargetManager | Found common ancestor with peer Peer 0x170d3457208e4e1842... PeerReputation 100, validated? true, disconnected? false at block 14833808
2022-05-24 04:57:45.431+00:00 | nioEventLoopGroup-3-3 | INFO | BlockPropagationManager | Saving announced block 14833811 (0x3fc66bace399c0f24dad7bc7fba9badf382a455cd75caf5a2857406321d594e4) for future import
2022-05-24 04:57:46.178+00:00 | EthScheduler-Services-318 (importBlock) | ERROR | AbstractBlockProcessor | failed persisting block
java.lang.RuntimeException: World State Root does not match expected value, header 0xa6501affc39a24c0c46e70973f9e34b16c6c090d1d7851dba98de0cb51a506c4 calculated 0x6d8c8d327044fd196b3beaa453a403958c717693300b660072a40157512603ab
at org.hyperledger.besu.ethereum.bonsai.BonsaiPersistedWorldState.persist(BonsaiPersistedWorldState.java:264)
at org.hyperledger.besu.ethereum.mainnet.AbstractBlockProcessor.processBlock(AbstractBlockProcessor.java:203)
at org.hyperledger.besu.ethereum.mainnet.AbstractBlockProcessor.processBlock(AbstractBlockProcessor.java:42)
at org.hyperledger.besu.ethereum.mainnet.BlockProcessor.processBlock(BlockProcessor.java:75)
at org.hyperledger.besu.ethereum.MainnetBlockValidator.processBlock(MainnetBlockValidator.java:146)
at org.hyperledger.besu.ethereum.MainnetBlockValidator.validateAndProcessBlock(MainnetBlockValidator.java:100)
at org.hyperledger.besu.ethereum.mainnet.MainnetBlockImporter.importBlock(MainnetBlockImporter.java:44)
at org.hyperledger.besu.ethereum.core.BlockImporter.importBlock(BlockImporter.java:44)
at org.hyperledger.besu.ethereum.eth.sync.fullsync.FullImportBlockStep.accept(FullImportBlockStep.java:61)
at org.hyperledger.besu.ethereum.eth.sync.fullsync.FullImportBlockStep.accept(FullImportBlockStep.java:31)
at org.hyperledger.besu.services.pipeline.CompleterStage.run(CompleterStage.java:37)
at org.hyperledger.besu.services.pipeline.Pipeline.lambda$runWithErrorHandling$3(Pipeline.java:152)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
2022-05-24 04:57:46.178+00:00 | EthScheduler-Services-318 (importBlock) | ERROR | MainnetBlockValidator | Error processing block. Block 14833809 (0x15ab57cc5bd28eb54a1bfc45d49e182420b4a8d0222c375b4bc1425072823d7e)
2022-05-24 04:57:46.178+00:00 | EthScheduler-Services-318 (importBlock) | WARN | PipelineChainDownloader | Invalid block detected. Disconnecting from sync target. Failed to import block: Invalid block at #14833809 (0x15ab57cc5bd28eb54a1bfc45d49e182420b4a8d0222c375b4bc1425072823d7e)
2022-05-24 04:57:46.178+00:00 | EthScheduler-Services-318 (importBlock) | WARN | PipelineChainDownloader | Chain download failed. Restarting after short delay.
java.util.concurrent.CompletionException: org.hyperledger.besu.ethereum.eth.sync.tasks.exceptions.InvalidBlockException: Failed to import block: Invalid block at #14833809 (0x15ab57cc5bd28eb54a1bfc45d49e182420b4a8d0222c375b4bc1425072823d7e)
at java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:368)
...
The error repeats for each block received.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 16 (16 by maintainers)
@matkt yes (see log below; let me know if you just want the entire log somewhere).
@jflo plain java process.