This commit is contained in:
Anatoly Yakovenko
2018-05-30 13:38:15 -07:00
committed by Greg Fitzgerald
parent a2b92c35e1
commit a8e1c44663
5 changed files with 92 additions and 74 deletions

View File

@ -11,7 +11,7 @@ use std::net::SocketAddr;
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::mpsc::{channel, Receiver, Sender}; use std::sync::mpsc::{channel, Receiver, Sender};
use std::sync::Arc; use std::sync::Arc;
use std::thread::{spawn, JoinHandle}; use std::thread::{Builder, JoinHandle};
use std::time::Duration; use std::time::Duration;
use std::time::Instant; use std::time::Instant;
use timing; use timing;
@ -30,7 +30,9 @@ impl BankingStage {
packet_recycler: packet::PacketRecycler, packet_recycler: packet::PacketRecycler,
) -> Self { ) -> Self {
let (signal_sender, signal_receiver) = channel(); let (signal_sender, signal_receiver) = channel();
let thread_hdl = spawn(move || loop { let thread_hdl = Builder::new()
.name("solana-banking-stage".to_string())
.spawn(move || loop {
let e = Self::process_packets( let e = Self::process_packets(
bank.clone(), bank.clone(),
&verified_receiver, &verified_receiver,
@ -42,7 +44,8 @@ impl BankingStage {
break; break;
} }
} }
}); })
.unwrap();
BankingStage { BankingStage {
thread_hdl, thread_hdl,
signal_receiver, signal_receiver,

View File

@ -9,7 +9,7 @@ use entry::Entry;
use hash::Hash; use hash::Hash;
use recorder::Recorder; use recorder::Recorder;
use std::sync::mpsc::{channel, Receiver, Sender, TryRecvError}; use std::sync::mpsc::{channel, Receiver, Sender, TryRecvError};
use std::thread::{spawn, JoinHandle}; use std::thread::{Builder, JoinHandle};
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
use transaction::Transaction; use transaction::Transaction;
@ -35,7 +35,9 @@ impl RecordStage {
let (entry_sender, entry_receiver) = channel(); let (entry_sender, entry_receiver) = channel();
let start_hash = start_hash.clone(); let start_hash = start_hash.clone();
let thread_hdl = spawn(move || { let thread_hdl = Builder::new()
.name("solana-record-stage".to_string())
.spawn(move || {
let mut recorder = Recorder::new(start_hash); let mut recorder = Recorder::new(start_hash);
let duration_data = tick_duration.map(|dur| (Instant::now(), dur)); let duration_data = tick_duration.map(|dur| (Instant::now(), dur));
loop { loop {
@ -51,7 +53,8 @@ impl RecordStage {
recorder.hash(); recorder.hash();
} }
} }
}); })
.unwrap();
RecordStage { RecordStage {
entry_receiver, entry_receiver,

View File

@ -6,7 +6,7 @@ use packet;
use result::Result; use result::Result;
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc; use std::sync::Arc;
use std::thread::{spawn, JoinHandle}; use std::thread::{Builder, JoinHandle};
use std::time::Duration; use std::time::Duration;
use streamer; use streamer;
@ -41,12 +41,15 @@ impl ReplicateStage {
window_receiver: streamer::BlobReceiver, window_receiver: streamer::BlobReceiver,
blob_recycler: packet::BlobRecycler, blob_recycler: packet::BlobRecycler,
) -> Self { ) -> Self {
let thread_hdl = spawn(move || loop { let thread_hdl = Builder::new()
.name("solana-replicate-stage".to_string())
.spawn(move || loop {
let e = Self::replicate_requests(&bank, &window_receiver, &blob_recycler); let e = Self::replicate_requests(&bank, &window_receiver, &blob_recycler);
if e.is_err() && exit.load(Ordering::Relaxed) { if e.is_err() && exit.load(Ordering::Relaxed) {
break; break;
} }
}); })
.unwrap();
ReplicateStage { thread_hdl } ReplicateStage { thread_hdl }
} }
} }

View File

@ -11,7 +11,7 @@ use std::net::SocketAddr;
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::mpsc::{channel, Receiver}; use std::sync::mpsc::{channel, Receiver};
use std::sync::Arc; use std::sync::Arc;
use std::thread::{spawn, JoinHandle}; use std::thread::{Builder, JoinHandle};
use std::time::Instant; use std::time::Instant;
use streamer; use streamer;
use timing; use timing;
@ -90,7 +90,9 @@ impl RequestStage {
let request_processor = Arc::new(request_processor); let request_processor = Arc::new(request_processor);
let request_processor_ = request_processor.clone(); let request_processor_ = request_processor.clone();
let (blob_sender, blob_receiver) = channel(); let (blob_sender, blob_receiver) = channel();
let thread_hdl = spawn(move || loop { let thread_hdl = Builder::new()
.name("solana-request-stage".to_string())
.spawn(move || loop {
let e = Self::process_request_packets( let e = Self::process_request_packets(
&request_processor_, &request_processor_,
&packet_receiver, &packet_receiver,
@ -103,7 +105,8 @@ impl RequestStage {
break; break;
} }
} }
}); })
.unwrap();
RequestStage { RequestStage {
thread_hdl, thread_hdl,
blob_receiver, blob_receiver,

View File

@ -8,7 +8,7 @@ use std::io::Write;
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::mpsc::{channel, Receiver}; use std::sync::mpsc::{channel, Receiver};
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use std::thread::{spawn, JoinHandle}; use std::thread::{Builder, JoinHandle};
use streamer; use streamer;
pub struct WriteStage { pub struct WriteStage {
@ -26,7 +26,9 @@ impl WriteStage {
entry_receiver: Receiver<Entry>, entry_receiver: Receiver<Entry>,
) -> Self { ) -> Self {
let (blob_sender, blob_receiver) = channel(); let (blob_sender, blob_receiver) = channel();
let thread_hdl = spawn(move || loop { let thread_hdl = Builder::new()
.name("solana-writer".to_string())
.spawn(move || loop {
let entry_writer = EntryWriter::new(&bank); let entry_writer = EntryWriter::new(&bank);
let _ = entry_writer.write_and_send_entries( let _ = entry_writer.write_and_send_entries(
&blob_sender, &blob_sender,
@ -38,7 +40,8 @@ impl WriteStage {
info!("broadcat_service exiting"); info!("broadcat_service exiting");
break; break;
} }
}); })
.unwrap();
WriteStage { WriteStage {
thread_hdl, thread_hdl,
@ -52,7 +55,9 @@ impl WriteStage {
entry_receiver: Receiver<Entry>, entry_receiver: Receiver<Entry>,
) -> Self { ) -> Self {
let (_blob_sender, blob_receiver) = channel(); let (_blob_sender, blob_receiver) = channel();
let thread_hdl = spawn(move || { let thread_hdl = Builder::new()
.name("solana-drain".to_string())
.spawn(move || {
let entry_writer = EntryWriter::new(&bank); let entry_writer = EntryWriter::new(&bank);
loop { loop {
let _ = entry_writer.drain_entries(&entry_receiver); let _ = entry_writer.drain_entries(&entry_receiver);
@ -61,7 +66,8 @@ impl WriteStage {
break; break;
} }
} }
}); })
.unwrap();
WriteStage { WriteStage {
thread_hdl, thread_hdl,