diff --git a/miner/src/miner.rs b/miner/src/miner.rs index d03fcd524..f159cac1c 100644 --- a/miner/src/miner.rs +++ b/miner/src/miner.rs @@ -420,7 +420,7 @@ impl MinerService for Miner { fn transaction(&self, hash: &H256) -> Option { match (self.sealing_enabled.load(atomic::Ordering::Relaxed), self.sealing_work.lock().unwrap().peek_last_ref()) { - (true, Some(pending)) => pending.transactions().iter().find(|t| &t.hash() == hash).map(|t| t.clone()), + (true, Some(pending)) => pending.transactions().iter().find(|t| &t.hash() == hash).cloned(), _ => { let queue = self.transaction_queue.lock().unwrap(); queue.find(hash) diff --git a/parity/informant.rs b/parity/informant.rs index c69c8938e..0eaebe10f 100644 --- a/parity/informant.rs +++ b/parity/informant.rs @@ -75,6 +75,7 @@ impl Informant { } } + #[cfg_attr(feature="dev", allow(match_bool))] pub fn tick(&self, client: &Client, maybe_sync: Option<&EthSync>) { let elapsed = self.last_tick.read().unwrap().elapsed(); if elapsed < Duration::from_secs(5) { diff --git a/rpc/src/v1/impls/eth.rs b/rpc/src/v1/impls/eth.rs index 4a4ee1643..a13512357 100644 --- a/rpc/src/v1/impls/eth.rs +++ b/rpc/src/v1/impls/eth.rs @@ -672,18 +672,26 @@ impl EthFilter for EthFilterClient where to_value(&hashes) }, PollFilter::PendingTransaction(ref mut previous_hashes) => { + // get hashes of pending transactions let current_hashes = take_weak!(self.miner).pending_transactions_hashes(); - // calculate diff - let previous_hashes_set = previous_hashes.into_iter().map(|h| h.clone()).collect::>(); - let diff = current_hashes - .iter() - .filter(|hash| previous_hashes_set.contains(&hash)) - .cloned() - .collect::>(); + let new_hashes = + { + let previous_hashes_set = previous_hashes.iter().collect::>(); + + // find all new hashes + current_hashes + .iter() + .filter(|hash| !previous_hashes_set.contains(hash)) + .cloned() + .collect::>() + }; + + // save all hashes of pending transactions *previous_hashes = current_hashes; - to_value(&diff) + // return new hashes + to_value(&new_hashes) }, PollFilter::Logs(ref mut block_number, ref mut previous_logs, ref filter) => { // retrive the current block number diff --git a/util/src/migration/db_impl.rs b/util/src/migration/db_impl.rs index 02c66d19b..760babe3c 100644 --- a/util/src/migration/db_impl.rs +++ b/util/src/migration/db_impl.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -//! kvdb::Database as migration::Destination +//! `kvdb::Database` as `migration::Destination` use std::collections::BTreeMap; use kvdb::{Database, DBTransaction};