Skip to content
Unverified Commit 41a5d8ec authored by Michal Kucharczyk's avatar Michal Kucharczyk Committed by GitHub
Browse files

`fatxpool`: handling limits and priorities improvements (#6405)

This PR provides a number of improvements around handling limits and
priorities in the fork-aware transaction pool.


#### Notes to reviewers.
#### Following are the notable changes:
1. #### [Better
support](https://github.com/paritytech/polkadot-sdk/pull/6405/commits/414ec3cc)
for `Usurped` transactions

When any view reports an `Usurped` transaction (replaced by other with
higher priority) it is removed from all the views (also inactive).
Removal is implemented by simply submitting usurper transaction to all
the views. It is also ensured that usurped tx will not sneak into the
`view_store` in newly created view (this is why
`ViewStore::pending_txs_replacements` was added).

1. ####
[`TimedTransactionSource`](https://github.com/paritytech/polkadot-sdk/pull/6405/commits/f10590f3)
introduced:

Every view now has an information when the transaction entered the pool.
Enforce limits (now only for future txs) uses this timestamp to find
worst transactions. Having common timestamp ensures coherent assessment
of the transaction's importance across different views. This also could
later be used to select which ready transaction shall be dropped.

1. #### `DroppedWatcher`: [improved
logic](https://github.com/paritytech/polkadot-sdk/pull/6405/commits/560db28c)
for future transactions
For future transaction - if the last referencing view is removed, the
transaction will be dropped from the pool. This prevents future
unincluded and un-promoted transactions from staying in the pool for
long time.

#### And some minor changes:

1.
[simplified](https://github.com/paritytech/polkadot-sdk/pull/6405/commits/2d0bbf83)
the flow in `update_view_with_mempool` (code duplication + minor bug
fix).
2. `graph::BasePool`: [handling
priorities](https://github.com/paritytech/polkadot-sdk/pull/6405/commits/c9f2d393)
for future transaction improved (previously transaction with lower prio
was reported as failed),
3. `graph::listener`: dedicated `limit_enforced`/`usurped`/`dropped`
[calls
added](https://github.com/paritytech/polkadot-sdk/pull/6405/commits/7b58a68c),
4. flaky test
[fixed](https://github.com/paritytech/polkadot-sdk/pull/6405/commits/e0a7bc6c

)
5. new tests added,

related to: #5809

---------

Co-authored-by: default avatarGitHub Action <[email protected]>
Co-authored-by: default avatarIulian Barbu <[email protected]>
parent 896c8144
Pipeline #507984 waiting for manual action with stages
in 30 minutes and 1 second