issue 1017 - only generate blocks when there are workers (#1018)
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user