Closed
Description
Description
2023-09-06 09:09:07.295+01:00 | BftProcessorExecutor-QBFT-0 | ERROR | EventMultiplexer | State machine threw exception while processing event \{BlockTimerExpiry{Round Identifier=ConsensusRoundIdentifier{Sequence=378, Round=0}}\}
java.lang.IllegalStateException: Block creation failed unexpectedly. Will restart on next block added to chain.
at org.hyperledger.besu.ethereum.blockcreation.AbstractBlockCreator.createBlock(AbstractBlockCreator.java:292)
at org.hyperledger.besu.ethereum.blockcreation.AbstractBlockCreator.createBlock(AbstractBlockCreator.java:156)
at org.hyperledger.besu.ethereum.blockcreation.AbstractBlockCreator.createBlock(AbstractBlockCreator.java:142)
at org.hyperledger.besu.consensus.qbft.statemachine.QbftRound.createAndSendProposalMessage(QbftRound.java:130)
at org.hyperledger.besu.consensus.qbft.statemachine.QbftBlockHeightManager.handleBlockTimerExpiry(QbftBlockHeightManager.java:136)
at org.hyperledger.besu.consensus.common.bft.statemachine.BaseBftController.handleBlockTimerExpiry(BaseBftController.java:167)
at org.hyperledger.besu.consensus.common.bft.EventMultiplexer.handleBftEvent(EventMultiplexer.java:65)
at java.base/java.util.Optional.ifPresent(Optional.java:178)
at org.hyperledger.besu.consensus.common.bft.BftProcessor.run(BftProcessor.java:65)
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)
Caused by: java.lang.NullPointerException: Cannot invoke "org.hyperledger.besu.ethereum.eth.transactions.PendingTransactions.selectTransactions(org.hyperledger.besu.ethereum.eth.transactions.PendingTransactions$TransactionSelector)" because "this.pendingTransactions" is null
at org.hyperledger.besu.ethereum.eth.transactions.TransactionPool.selectTransactions(TransactionPool.java:526)
at org.hyperledger.besu.ethereum.blockcreation.BlockTransactionSelector.buildTransactionListForBlock(BlockTransactionSelector.java:274)
at org.hyperledger.besu.ethereum.blockcreation.AbstractBlockCreator.selectTransactions(AbstractBlockCreator.java:362)
at org.hyperledger.besu.ethereum.blockcreation.AbstractBlockCreator.createBlock(AbstractBlockCreator.java:200)
... 11 more
Steps to Reproduce (Bug)
- Start a 5 node QBFT chain
- Stop one of the nodes and delete its database
- Restart the node with
--sync-mode=FAST --fast-sync-min-peers=4
(the min peers is needed to avoid the min number of 5 before syncing starts)
Expected behavior: The node syncs with the chain and then resumes proposing & validating blocks (since it was before it was stopped and its data deleted)
Actual behavior: NPE ^^
Activity