Skip to content

Commit 1908417

Browse files
committed
fix invalidation check
1 parent 8848c0e commit 1908417

1 file changed

Lines changed: 10 additions & 12 deletions

File tree

crates/payload/builder/src/prewarming.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ use std::{
33
thread,
44
};
55

6-
use reth_transaction_pool::{BestTransactions, error::InvalidPoolTransactionError};
6+
use reth_transaction_pool::{
7+
BestTransactions, PoolTransaction, error::InvalidPoolTransactionError,
8+
};
79
use tempo_transaction_pool::best::BestTransaction;
810

911
/// Event returned by [`BestTransactionsStream`].
@@ -153,23 +155,19 @@ fn is_invalidated_buffered_transaction(
153155
invalid: &BestTransaction,
154156
candidate: &BestTransaction,
155157
) -> bool {
158+
// Skip invalidation for expiring nonce transactions - they are independent
159+
// and should not block other expiring nonce txs from the same sender
156160
if invalid.transaction.is_expiring_nonce() {
157161
return false;
158162
}
159163

160164
if invalid.transaction.is_aa_2d() {
161-
let Some(invalid_id) = invalid.transaction.aa_transaction_id() else {
162-
return false;
163-
};
164-
return candidate
165+
candidate
165166
.transaction
166167
.aa_transaction_id()
167-
.is_some_and(|candidate_id| {
168-
candidate_id.seq_id == invalid_id.seq_id && candidate_id.nonce >= invalid_id.nonce
169-
});
168+
.zip(invalid.transaction.aa_transaction_id())
169+
.is_some_and(|(candidate_id, invalid_id)| candidate_id.seq_id == invalid_id.seq_id)
170+
} else {
171+
candidate.transaction.sender() == invalid.transaction.sender()
170172
}
171-
172-
!candidate.transaction.is_aa_2d()
173-
&& candidate.sender() == invalid.sender()
174-
&& candidate.nonce() >= invalid.nonce()
175173
}

0 commit comments

Comments
 (0)