issue 1017 - only generate blocks when there are workers (#1018)

This commit is contained in:
Blade Doyle
2018-05-01 01:29:39 -07:00
committed by Yeastplume
parent f8732d7621
commit 9f890643b9
+8 -4
View File
@@ -471,7 +471,7 @@ impl StratumServer {
} // handle submit a solution
// Purge dead/sick workers - remove all workers marked in error state
fn clean_workers(&mut self, stratum_stats: &mut Arc<RwLock<StratumStats>>) {
fn clean_workers(&mut self, stratum_stats: &mut Arc<RwLock<StratumStats>>) -> usize {
let mut start = 0;
let mut workers_l = self.workers.lock().unwrap();
loop {
@@ -500,7 +500,7 @@ impl StratumServer {
if start >= workers_l.len() {
let mut stratum_stats = stratum_stats.write().unwrap();
stratum_stats.num_workers = workers_l.len();
return;
return stratum_stats.num_workers;
}
}
}
@@ -563,6 +563,7 @@ impl StratumServer {
// nothing has changed. We only want to create a key_id for each new block,
// and reuse it when we rebuild the current block to add new tx.
let mut key_id = None;
let mut num_workers: usize;
let mut head = self.chain.head().unwrap();
let mut current_hash = head.prev_block_h;
let mut latest_hash;
@@ -596,7 +597,7 @@ impl StratumServer {
let mining_stopped = self.currently_syncing.load(Ordering::Relaxed);
// Remove workers with failed connections
self.clean_workers(&mut stratum_stats.clone());
num_workers = self.clean_workers(&mut stratum_stats.clone());
// get the latest chain state
head = self.chain.head().unwrap();
@@ -606,7 +607,10 @@ impl StratumServer {
// There is a new block on the chain
// or We are rebuilding the current one to include new transactions
// and we're not synching
if current_hash != latest_hash || time::get_time().sec >= deadline && !mining_stopped {
// and there is at least one worker connected
if (current_hash != latest_hash || time::get_time().sec >= deadline) && !mining_stopped
&& num_workers > 0
{
if current_hash != latest_hash {
// A brand new block, so we will generate a new key_id
key_id = None;