Remove exit variable from ReplicateStage

This commit is contained in:
Greg Fitzgerald
2018-07-05 16:29:49 -06:00
committed by Greg Fitzgerald
parent 81477246be
commit 46602ba9c3
2 changed files with 10 additions and 7 deletions

View File

@ -2,9 +2,9 @@
use bank::Bank; use bank::Bank;
use ledger; use ledger;
use result::Result; use result::{Error, Result};
use service::Service; use service::Service;
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::mpsc::RecvTimeoutError;
use std::sync::Arc; use std::sync::Arc;
use std::thread::{self, Builder, JoinHandle}; use std::thread::{self, Builder, JoinHandle};
use std::time::Duration; use std::time::Duration;
@ -29,13 +29,16 @@ impl ReplicateStage {
Ok(()) Ok(())
} }
pub fn new(bank: Arc<Bank>, exit: Arc<AtomicBool>, window_receiver: BlobReceiver) -> Self { pub fn new(bank: Arc<Bank>, window_receiver: BlobReceiver) -> Self {
let thread_hdl = Builder::new() let thread_hdl = Builder::new()
.name("solana-replicate-stage".to_string()) .name("solana-replicate-stage".to_string())
.spawn(move || loop { .spawn(move || loop {
let e = Self::replicate_requests(&bank, &window_receiver); if let Err(e) = Self::replicate_requests(&bank, &window_receiver) {
if e.is_err() && exit.load(Ordering::Relaxed) { match e {
break; Error::RecvTimeoutError(RecvTimeoutError::Disconnected) => break,
Error::RecvTimeoutError(RecvTimeoutError::Timeout) => (),
_ => error!("{:?}", e),
}
} }
}) })
.unwrap(); .unwrap();

View File

@ -94,7 +94,7 @@ impl Tvu {
blob_receiver, blob_receiver,
); );
let replicate_stage = ReplicateStage::new(bank, exit, blob_receiver); let replicate_stage = ReplicateStage::new(bank, blob_receiver);
Tvu { Tvu {
replicate_stage, replicate_stage,