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) - 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 ### 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) - do not create ignorable storage on revert storage-variables subcommand [#5830](https://github.com/hyperledger/besu/pull/5830)
### Download Links ### Download Links

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

@ -18,6 +18,7 @@ import static java.util.Arrays.asList;
import static java.util.Collections.emptyList; import static java.util.Collections.emptyList;
import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toList;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import org.hyperledger.besu.config.StubGenesisConfigOptions; 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.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource; import org.junit.jupiter.params.provider.ValueSource;
@SuppressWarnings("unchecked")
public class TransactionPoolLondonTest extends AbstractTransactionPoolTest { public class TransactionPoolLondonTest extends AbstractTransactionPoolTest {
private static final Wei BASE_FEE_FLOOR = Wei.of(7L); private static final Wei BASE_FEE_FLOOR = Wei.of(7L);
@ -253,6 +255,25 @@ public class TransactionPoolLondonTest extends AbstractTransactionPoolTest {
.isEqualTo(1); .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( private int add1559TxAndGetPendingTxsCount(
final Wei genesisBaseFee, final Wei genesisBaseFee,
final Wei minGasPrice, final Wei minGasPrice,

Loading…
Cancel
Save