fix(transaction-pool): mark TransactionEvent::Invalid as final #19782
+1
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change updates TransactionEvent::is_final() to include Invalid as a terminal event. The transaction pool subscribes to per-hash events before validation in add_transaction_and_subscribe(), and when validation fails with Invalid, the per-hash broadcaster would stay in broadcasters_by_hash because Invalid was not considered final and no more events would follow. As a result, the sender entry could be retained indefinitely. Treating Invalid as final aligns with documentation that Invalid is “invalid indefinitely,” matches lifecycle expectations for transactions that never enter the pool, and ensures the per-hash broadcaster is cleaned up immediately after emitting Invalid, preventing resource leaks.