Don't call runtime if pool is empty. (#1283)

This commit is contained in:
Tomasz Drwięga
2018-12-19 10:21:46 +01:00
committed by Svyatoslav Nikolsky
parent 0c32567c1c
commit eba9d1e0a4
2 changed files with 12 additions and 1 deletions
+5 -1
View File
@@ -196,6 +196,11 @@ impl<C: Components> MaintainTransactionPool<Self> for C where
) -> error::Result<()> {
use runtime_primitives::transaction_validity::TransactionValidity;
// Avoid calling into runtime if there is nothing to prune from the pool anyway.
if transaction_pool.status().is_empty() {
return Ok(())
}
let block = client.block(id)?;
let tags = match block {
None => return Ok(()),
@@ -222,7 +227,6 @@ impl<C: Components> MaintainTransactionPool<Self> for C where
}
}
/// The super trait that combines all required traits a `Service` needs to implement.
pub trait ServiceTrait<C: Components>:
Deref<Target = Service<C>>
@@ -294,6 +294,13 @@ pub struct Status {
pub future: usize,
}
impl Status {
/// Returns true if the are no transactions in the pool.
pub fn is_empty(&self) -> bool {
self.ready == 0 && self.future == 0
}
}
#[cfg(test)]
mod tests {
use super::*;