From 6af33f430966a7c61002e5888e76ff6e31c6b2c6 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 | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ethcore/src/miner/miner.rs b/ethcore/src/miner/miner.rs index 590332029..dfe90a54f 100644 --- a/ethcore/src/miner/miner.rs +++ b/ethcore/src/miner/miner.rs @@ -96,12 +96,10 @@ pub struct Miner { // NOTE [ToDr] When locking always lock in this order! transaction_queue: Mutex, sealing_work: Mutex, - - // for sealing... - options: MinerOptions, - next_allowed_reseal: Mutex, sealing_block_last_request: Mutex, + // for sealing... + options: MinerOptions, gas_range_target: RwLock<(U256, U256)>, author: RwLock
, extra_data: RwLock, @@ -651,11 +649,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().unwrap().has_local_pending_transactions(); let mut sealing_work = self.sealing_work.lock().unwrap(); 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().unwrap().has_local_pending_transactions(); let last_request = *self.sealing_block_last_request.lock().unwrap(); let should_disable_sealing = !self.forced_sealing() && !has_local_transactions