Skip to content

Commit

Permalink
Reset transaction pool state every time the initial sync is done
Browse files Browse the repository at this point in the history
Signed-off-by: Fabio Di Fabio <[email protected]>
  • Loading branch information
fab-10 authored and garyschulte committed Jan 12, 2023
1 parent 19a7145 commit d830f2a
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ public class PeerTransactionTracker implements EthPeer.DisconnectCallback {
private final Map<EthPeer, Set<Hash>> seenTransactions = new ConcurrentHashMap<>();
private final Map<EthPeer, Set<Transaction>> transactionsToSend = new ConcurrentHashMap<>();

public void reset() {
seenTransactions.clear();
transactionsToSend.clear();
}

public synchronized void markTransactionsAsSeen(
final EthPeer peer, final Collection<Transaction> transactions) {
markTransactionHashesAsSeen(peer, toHashList(transactions));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,10 @@ void handleConnect(final EthPeer peer) {
transactionBroadcaster.relayTransactionPoolTo(peer);
}

public void reset() {
pendingTransactions.reset();
}

public ValidationResult<TransactionInvalidReason> addLocalTransaction(
final Transaction transaction) {
final ValidationResultAndAccount validationResult = validateLocalTransaction(transaction);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,8 @@ static TransactionPool createTransactionPool(
@Override
public void onInitialSyncCompleted() {
LOG.info("Enabling transaction handling following initial sync");
transactionPool.reset();
transactionTracker.reset();
transactionPool.setEnabled();
transactionsMessageHandler.setEnabled();
pooledTransactionsMessageHandler.setEnabled();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,12 @@ public AbstractPendingTransactionsSorter(
pendingTransactions::size);
}

public void reset() {
pendingTransactions.clear();
transactionsBySender.clear();
lowestInvalidKnownNonceCache.reset();
}

public void evictOldTransactions() {
final Instant removeTransactionsBefore =
clock.instant().minus(poolConfig.getPendingTxRetentionPeriod(), ChronoUnit.HOURS);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,13 @@ public BaseFeePendingTransactionsSorter(
.thenComparing(PendingTransaction::getSequence)
.reversed());

@Override
public void reset() {
super.reset();
prioritizedTransactionsStaticRange.clear();
prioritizedTransactionsDynamicRange.clear();
}

@Override
public void manageBlockAdded(final Block block) {
block.getHeader().getBaseFee().ifPresent(this::updateBaseFee);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ public GasPricePendingTransactionsSorter(
super(poolConfig, clock, metricsSystem, chainHeadHeaderSupplier);
}

@Override
public void reset() {
super.reset();
prioritizedTransactions.clear();
}

@Override
public void manageBlockAdded(final Block block) {
// nothing to do
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,11 @@ public String toString() {
+ '}';
}

public void reset() {
lowestInvalidKnownNonceBySender.clear();
evictionOrder.clear();
}

private static class InvalidNonceStatus implements Comparable<InvalidNonceStatus> {

final Address address;
Expand Down

0 comments on commit d830f2a

Please sign in to comment.