Fix issue 5824 - Duplicate key errors in EthScheduler-Transactions (#5857)

Fix issue 5824 - Duplicate key errors in EthScheduler-Transactions

Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
pull/5871/head
ahamlat 1 year ago committed by GitHub
parent 25c2065434
commit 7fd7224964
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      CHANGELOG.md
  2. 3
      ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPool.java
  3. 21
      ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolLondonTest.java

@ -13,6 +13,8 @@
- Layered transaction pool implementation is now stable and enabled by default. If you want still to use the legacy implementation, use `--tx-pool=legacy` [#5772](https://github.com/hyperledger/besu)
### Bug Fixes
- do not create ignorable storage on revert storage-variables subcommand [#5830](https://github.com/hyperledger/besu/pull/5830)
- fix duplicate key errors in EthScheduler-Transactions [#5857](https://github.com/hyperledger/besu/pull/5857)
- do not create ignorable storage on revert storage-variables subcommand [#5830](https://github.com/hyperledger/besu/pull/5830)
### Download Links

@ -218,7 +218,8 @@ public class TransactionPool implements BlockAddedObserver {
addedTransactions.add(transaction);
}
return result;
}));
},
(transaction1, transaction2) -> transaction1));
LOG_FOR_REPLAY
.atTrace()

@ -18,6 +18,7 @@ import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import static java.util.stream.Collectors.toList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.mockito.Mockito.when;
import org.hyperledger.besu.config.StubGenesisConfigOptions;
@ -54,6 +55,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
@SuppressWarnings("unchecked")
public class TransactionPoolLondonTest extends AbstractTransactionPoolTest {
private static final Wei BASE_FEE_FLOOR = Wei.of(7L);
@ -253,6 +255,25 @@ public class TransactionPoolLondonTest extends AbstractTransactionPoolTest {
.isEqualTo(1);
}
@Test
public void addRemoteTransactionsShouldAllowDuplicates() {
final Transaction transaction1 = createTransaction(1, Wei.of(7L));
final Transaction transaction2 = createTransaction(2, Wei.of(7L));
final Transaction transaction3 = createTransaction(2, Wei.of(7L));
final Transaction transaction4 = createTransaction(3, Wei.of(7L));
givenTransactionIsValid(transaction1);
givenTransactionIsValid(transaction2);
givenTransactionIsValid(transaction3);
givenTransactionIsValid(transaction4);
assertThatCode(
() ->
transactionPool.addRemoteTransactions(
List.of(transaction1, transaction2, transaction3, transaction4)))
.doesNotThrowAnyException();
}
private int add1559TxAndGetPendingTxsCount(
final Wei genesisBaseFee,
final Wei minGasPrice,

Loading…
Cancel
Save