mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 14:37:57 +00:00
Make transaction pool prune transactions only of canonical blocks (#6123)
* Make tx pool aware of retracted fork blocks * Make it compile * Update client/transaction-pool/src/lib.rs Co-authored-by: Nikolay Volf <nikvolf@gmail.com> * Fix doc test * Simplify the implementation * Send tree route as arc to prevent heavy clones * Switch to use `ExtrinsicHash` to make it more clear * Fix benchmark Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
This commit is contained in:
@@ -53,12 +53,16 @@ macro_rules! new_full_start {
|
||||
.with_select_chain(|_config, backend| {
|
||||
Ok(sc_consensus::LongestChain::new(backend.clone()))
|
||||
})?
|
||||
.with_transaction_pool(|config, client, _fetcher, prometheus_registry| {
|
||||
let pool_api = sc_transaction_pool::FullChainApi::new(client.clone());
|
||||
.with_transaction_pool(|builder| {
|
||||
let pool_api = sc_transaction_pool::FullChainApi::new(
|
||||
builder.client().clone(),
|
||||
);
|
||||
let config = builder.config();
|
||||
|
||||
Ok(sc_transaction_pool::BasicPool::new(
|
||||
config,
|
||||
config.transaction_pool.clone(),
|
||||
std::sync::Arc::new(pool_api),
|
||||
prometheus_registry,
|
||||
builder.prometheus_registry(),
|
||||
))
|
||||
})?
|
||||
.with_import_queue(|
|
||||
@@ -323,12 +327,18 @@ pub fn new_light(config: Configuration)
|
||||
.with_select_chain(|_config, backend| {
|
||||
Ok(LongestChain::new(backend.clone()))
|
||||
})?
|
||||
.with_transaction_pool(|config, client, fetcher, prometheus_registry| {
|
||||
let fetcher = fetcher
|
||||
.with_transaction_pool(|builder| {
|
||||
let fetcher = builder.fetcher()
|
||||
.ok_or_else(|| "Trying to start light transaction pool without active fetcher")?;
|
||||
let pool_api = sc_transaction_pool::LightChainApi::new(client.clone(), fetcher.clone());
|
||||
let pool_api = sc_transaction_pool::LightChainApi::new(
|
||||
builder.client().clone(),
|
||||
fetcher,
|
||||
);
|
||||
let pool = sc_transaction_pool::BasicPool::with_revalidation_type(
|
||||
config, Arc::new(pool_api), prometheus_registry, sc_transaction_pool::RevalidationType::Light,
|
||||
builder.config().transaction_pool.clone(),
|
||||
Arc::new(pool_api),
|
||||
builder.prometheus_registry(),
|
||||
sc_transaction_pool::RevalidationType::Light,
|
||||
);
|
||||
Ok(pool)
|
||||
})?
|
||||
@@ -481,7 +491,7 @@ mod tests {
|
||||
ChainEvent::NewBlock {
|
||||
is_new_best: true,
|
||||
id: parent_id.clone(),
|
||||
retracted: vec![],
|
||||
tree_route: None,
|
||||
header: parent_header.clone(),
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user