besu
besu copied to clipboard
Besu Chain is stuck if too many smartcontract deployment requests in TX pool
Description
As an Besu Client, I set Besu blockperiod as 2 seconds, I built a smartcontract, and use one single account to deploy this smartcontract 800 times. the deployment requests are come into 800 transactions. then I submitted 800 transactions in transaction pool with nonce gap, for example, one account latest nonce is 5, and I set the 800 transaction's nonce get start with 10, then all the 800 transactions with nonce number is 10-810, and they will stay in transaction pool and wait the nonce gap is fixed. s so that after I fixed nonce from 5-9, then the whole TX pool seems be stuck, sometimes it will gave a "max selection timeout issue", and it can't generate the blocker anymore, when all the transactions was deleted after it's expired(13 hours), even the chain can generate the new block, when I submit several TX without nonce gap with same account address, it seems the TX was missed, I can't find it on chain or TX pool.
Acceptance Criteria
- The Besu can runs well after I fixed all the nonce gap issue in TX pool.
Steps to Reproduce (Bug)
- To build a smart contract into binary code, and set Besu blockperiod time as 2 seconds;
- To create a new account on chain;
- To deploy the smart contract with the same account 800 times with nonce gap, and keep all the 800 TXs in TX pool;
- Try to fix the nonce gap;
- If you see there is no new block generate, this issue is reproducing successfully;
Expected behavior: [What you expect to happen] When the nonce gap was fixed, all the 800 transactions will be submitted on chain, and block can be generated in a right way.
Actual behavior: [What actually happens] The chain is stucked, and no new block is generated.
Frequency: [What percentage of the time does it occur?] 100%
Logs (if a bug)
Please post relevant logs from Besu (and the consensus client, if running proof of stake) from before and after the issue.
Versions (Add all that apply)
- Software version: [
besu --version] Besu 23 ~ 24.7.0 - Java version: [
java -version] JDK17 for Besu23, JDK21 for Besu 24 - OS Name & Version: [
cat /etc/*release] Redhat - Kernel Version: [
uname -a] - Virtual Machine software & version: [
vmware -v] - Docker Version: [
docker version] - Cloud VM, type, size: [Amazon Web Services I3-large]
- Consensus Client & Version if using Proof of Stake: [e.g. Teku, Lighthouse, Prysm, Nimbus, Lodestar]
Smart contract information (If you're reporting an issue arising from deploying or calling a smart contract, please supply related information)
- Solidity version [
solc --version] - Repo with minimal set of deployable/reproducible contract code - please provide a link
- Please include specifics on how you are deploying/calling the contract
- Have you reproduced the issue on other eth clients
Additional Information (Add any of the following or anything else that may be relevant)
- Besu setup info - genesis file, config options
- System info - memory, CPU