From 73c19fd4b517dada829c31182e4fa15b872adbd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Tue, 9 Aug 2016 11:45:07 +0200 Subject: [PATCH] Fixing miner deadlock (#1885) --- ethcore/src/miner/miner.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ethcore/src/miner/miner.rs b/ethcore/src/miner/miner.rs index 3328565eb..728de4deb 100644 --- a/ethcore/src/miner/miner.rs +++ b/ethcore/src/miner/miner.rs @@ -168,12 +168,11 @@ pub struct Miner { // NOTE [ToDr] When locking always lock in this order! transaction_queue: Arc>, sealing_work: Mutex, - + next_allowed_reseal: Mutex, + sealing_block_last_request: Mutex, // for sealing... options: MinerOptions, - next_allowed_reseal: Mutex, - sealing_block_last_request: Mutex, gas_range_target: RwLock<(U256, U256)>, author: RwLock
, extra_data: RwLock, @@ -736,11 +735,11 @@ impl MinerService for Miner { fn update_sealing(&self, chain: &MiningBlockChainClient) { trace!(target: "miner", "update_sealing"); let requires_reseal = { + let has_local_transactions = self.transaction_queue.lock().has_local_pending_transactions(); let mut sealing_work = self.sealing_work.lock(); if sealing_work.enabled { trace!(target: "miner", "update_sealing: sealing enabled"); let current_no = chain.chain_info().best_block_number; - let has_local_transactions = self.transaction_queue.lock().has_local_pending_transactions(); let last_request = *self.sealing_block_last_request.lock(); let should_disable_sealing = !self.forced_sealing() && !has_local_transactions