besu: Critical Exception Processing Transaction
Description
My Besu node seems to have become corrupt, possibly after a reorg?
I think this is the second time in a couple weeks this happened. I just re-sync a few weeks ago because of a similar or if not the same bug (I didn’t look into it that hard, I figured it was fluke)
2022-12-02 18:57:24.300+00:00 | vert.x-worker-thread-0 | INFO | EngineNewPayload | Imported #16,098,404 / 156 tx / base fee 14.19 gwei / 19,826,119 (66.1%) gas / (0xabc875990fc719c8363fc652c68b84465514a4be0faf57b69e78da016bb1bc2d) in 2.467s. Peers: 17
2022-12-02 18:57:31.013+00:00 | vert.x-eventloop-thread-11 | ERROR | EthStatsService | Failed to reach the ethstats server Failed to resolve 'ethstats.net' after 2 queries
2022-12-02 18:57:42.724+00:00 | vert.x-eventloop-thread-13 | ERROR | EthStatsService | Failed to reach the ethstats server Failed to resolve 'ethstats.net' after 2 queries
2022-12-02 18:57:53.796+00:00 | vert.x-eventloop-thread-15 | ERROR | EthStatsService | Failed to reach the ethstats server Failed to resolve 'ethstats.net' after 2 queries
2022-12-02 18:57:55.394+00:00 | vert.x-worker-thread-0 | WARN | DefaultBlockchain | Chain Reorganization +9 new / -0 old
Old - hash: 0xfd2febdf386ce960c55e6dfbbb36027da157e0b78bcbae677cd51c1b4e0cf5e6, height: 16098394
New - hash: 0x6371917fba3322ba5341b58c20ea6b122fd6071eb9dbd57ad0d28ca5f44b626f, height: 16098403
Ancestor - hash: 0xfd2febdf386ce960c55e6dfbbb36027da157e0b78bcbae677cd51c1b4e0cf5e6, height: 16098394
2022-12-02 18:57:55.476+00:00 | vert.x-worker-thread-0 | INFO | EngineForkchoiceUpdated | VALID for fork-choice-update: head: 0x6371917fba3322ba5341b58c20ea6b122fd6071eb9dbd57ad0d28ca5f44b626f, finalized: 0xd585be57185dae288b2308c8360e5b2e3d2d2219c089d7e82e04c1a8f46ed6b6, safeBlockHash: 0xeab7558264de8d37727a07f432424866a7463c2699490073e25f46519f94cb84
2022-12-02 18:57:58.830+00:00 | vert.x-worker-thread-0 | ERROR | MainnetTransactionProcessor | Critical Exception Processing Transaction
org.hyperledger.besu.ethereum.trie.MerkleTrieException: Unable to load trie node value for hash 0x02e481ac0a91359eba51c88ffd254bbef048e6a71c810c38cba58a68146befbb location 0x
at org.hyperledger.besu.ethereum.trie.StoredNode.lambda$load$0(StoredNode.java:133)
at java.base/java.util.Optional.orElseThrow(Optional.java:408)
at org.hyperledger.besu.ethereum.trie.StoredNode.load(StoredNode.java:131)
at org.hyperledger.besu.ethereum.trie.StoredNode.accept(StoredNode.java:63)
at org.hyperledger.besu.ethereum.trie.StoredMerklePatriciaTrie.get(StoredMerklePatriciaTrie.java:119)
at org.hyperledger.besu.ethereum.bonsai.BonsaiWorldStateKeyValueStorage.getStorageValueBySlotHash(BonsaiWorldStateKeyValueStorage.java:199)
at org.hyperledger.besu.ethereum.bonsai.BonsaiPersistedWorldState.getStorageValueBySlotHash(BonsaiPersistedWorldState.java:421)
at org.hyperledger.besu.ethereum.bonsai.BonsaiWorldStateUpdater.getStorageValueBySlotHash(BonsaiWorldStateUpdater.java:353)
at org.hyperledger.besu.ethereum.bonsai.BonsaiWorldStateUpdater.getStorageValue(BonsaiWorldStateUpdater.java:340)
at org.hyperledger.besu.ethereum.bonsai.BonsaiAccount.getStorageValue(BonsaiAccount.java:208)
at org.hyperledger.besu.evm.worldstate.UpdateTrackingAccount.getStorageValue(UpdateTrackingAccount.java:213)
at org.hyperledger.besu.evm.worldstate.UpdateTrackingAccount.getStorageValue(UpdateTrackingAccount.java:213)
at org.hyperledger.besu.evm.worldstate.UpdateTrackingAccount.getStorageValue(UpdateTrackingAccount.java:213)
at org.hyperledger.besu.evm.worldstate.UpdateTrackingAccount.getStorageValue(UpdateTrackingAccount.java:213)
at org.hyperledger.besu.evm.worldstate.UpdateTrackingAccount.getStorageValue(UpdateTrackingAccount.java:213)
at org.hyperledger.besu.evm.operation.SLoadOperation.execute(SLoadOperation.java:58)
at org.hyperledger.besu.evm.EVM.runToHalt(EVM.java:282)
at org.hyperledger.besu.evm.processor.AbstractMessageProcessor.codeExecute(AbstractMessageProcessor.java:161)
at org.hyperledger.besu.evm.processor.AbstractMessageProcessor.process(AbstractMessageProcessor.java:173)
at org.hyperledger.besu.ethereum.mainnet.MainnetTransactionProcessor.process(MainnetTransactionProcessor.java:492)
at org.hyperledger.besu.ethereum.mainnet.MainnetTransactionProcessor.processTransaction(MainnetTransactionProcessor.java:404)
at org.hyperledger.besu.ethereum.mainnet.AbstractBlockProcessor.processBlock(AbstractBlockProcessor.java:104)
at org.hyperledger.besu.ethereum.mainnet.BlockProcessor.processBlock(BlockProcessor.java:76)
at org.hyperledger.besu.ethereum.MainnetBlockValidator.processBlock(MainnetBlockValidator.java:205)
at org.hyperledger.besu.ethereum.MainnetBlockValidator.validateAndProcessBlock(MainnetBlockValidator.java:135)
at org.hyperledger.besu.consensus.merge.blockcreation.MergeCoordinator.validateBlock(MergeCoordinator.java:440)
at org.hyperledger.besu.consensus.merge.blockcreation.MergeCoordinator.rememberBlock(MergeCoordinator.java:454)
at org.hyperledger.besu.consensus.merge.blockcreation.TransitionCoordinator.rememberBlock(TransitionCoordinator.java:141)
at org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine.EngineNewPayload.syncResponse(EngineNewPayload.java:217)
at org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.ExecutionEngineJsonRpcMethod.lambda$response$0(ExecutionEngineJsonRpcMethod.java:73)
at io.vertx.core.impl.ContextImpl.lambda$null$0(ContextImpl.java:159)
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:100)
at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$1(ContextImpl.java:157)
at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
2022-12-02 18:57:58.831+00:00 | vert.x-worker-thread-0 | INFO | AbstractBlockProcessor | Block processing error: transaction invalid Internal Error in Besu - org.hyperledger.besu.ethereum.trie.MerkleTrieException: Unable to load trie node value for hash 0x02e481ac0a91359eba51c88ffd254bbef048e6a71c810c38cba58a68146befbb location 0x. Block 0x47d61f6dca45a190d79b2f5fda11c0b8eca83ce1ba2a5c8675e3d37eda836ac1 Transaction 0x7a74c82d2174681c6cd1cc529d685cd76f4fc470967cf107b503a151eecea617
2022-12-02 18:57:58.832+00:00 | vert.x-worker-thread-0 | INFO | MainnetBlockValidator | Optional[Block processing error: transaction invalid Internal Error in Besu - org.hyperledger.besu.ethereum.trie.MerkleTrieException: Unable to load trie node value for hash 0x02e481ac0a91359eba51c88ffd254bbef048e6a71c810c38cba58a68146befbb location 0x. Block 0x47d61f6dca45a190d79b2f5fda11c0b8eca83ce1ba2a5c8675e3d37eda836ac1 Transaction 0x7a74c82d2174681c6cd1cc529d685cd76f4fc470967cf107b503a151eecea617]. Block 16098405 (0x47d61f6dca45a190d79b2f5fda11c0b8eca83ce1ba2a5c8675e3d37eda836ac1)
2022-12-02 18:57:58.836+00:00 | vert.x-worker-thread-0 | WARN | EngineNewPayload | Invalid new payload: number: 16098405, hash: 0x47d61f6dca45a190d79b2f5fda11c0b8eca83ce1ba2a5c8675e3d37eda836ac1, parentHash: 0xabc875990fc719c8363fc652c68b84465514a4be0faf57b69e78da016bb1bc2d, latestValidHash: 0xabc875990fc719c8363fc652c68b84465514a4be0faf57b69e78da016bb1bc2d, status: INVALID, validationError: Block processing error: transaction invalid Internal Error in Besu - org.hyperledger.besu.ethereum.trie.MerkleTrieException: Unable to load trie node value for hash 0x02e481ac0a91359eba51c88ffd254bbef048e6a71c810c38cba58a68146befbb location 0x. Block 0x47d61f6dca45a190d79b2f5fda11c0b8eca83ce1ba2a5c8675e3d37eda836ac1 Transaction 0x7a74c82d2174681c6cd1cc529d685cd76f4fc470967cf107b503a151eecea617
Here is the important part of my Docker-Compose:
image: hyperledger/besu:latest
command:
- --data-path=/data
- --network=MAINNET
- --data-storage-format=BONSAI
- --Xbonsai-use-snapshots=true
- --sync-mode=X_SNAP
- --p2p-port=30303
- --pruning-enabled
- --nat-method=DOCKER
- --rpc-http-enabled=true
- --rpc-http-apis=ADMIN,DEBUG,ETH,NET,TRACE,TXPOOL,WEB3
- --rpc-http-host=0.0.0.0
- --rpc-http-port=8545
- --rpc-http-cors-origins=*
- --host-allowlist=*
- --rpc-ws-enabled=true
- --rpc-ws-apis=ADMIN,DEBUG,ETH,NET,TRACE,TXPOOL,WEB3
- --rpc-ws-host=0.0.0.0
- --rpc-ws-port=8546
- --engine-rpc-enabled
- --engine-rpc-port=8551
- --engine-jwt-secret=/data/jwtsecret
- --engine-host-allowlist=*
- --Xplugin-rocksdb-high-spec-enabled
I also have some of these in my logs from earlier:
2022-12-02 16:49:17.231+00:00 | vert.x-worker-thread-0 | WARN | EngineNewPayload | Invalid new payload: number: 16098395, hash: 0x3d23c3ff2ab9cdb7dec49c0314660c93c6f65b5607f716f6f15d00798c1a281e, parentHash: 0xfd2febdf386ce960c55e6dfbbb36027da157e0b78bcbae677cd51c1b4e0cf5e6, latestValidHash: 0x0000000000000000000000000000000000000000000000000000000000000000, status: INVALID, validationError: Block already present in bad block manager.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 1
- Comments: 22 (13 by maintainers)
We recommend removing that flag right now. It is still an experimental feature/flag and we are continuing to tweak Bonsai snapshots.
It seems you have the same issue we are working on for our 23.1.0 release coming in a week or 2. Either you can wait for that release, where we will include a tool to heal existing nodes with this problem, or re-sync. @matkt - maybe we can work with this user’s database to test your node healing PR prior to the release?