Limit sticky mutex to WriteStage

This commit is contained in:
Greg Fitzgerald 2018-07-01 10:55:16 -07:00 committed by Greg Fitzgerald
parent 17de79a83a
commit 56e37ad2f4
2 changed files with 17 additions and 14 deletions

View File

@ -34,7 +34,7 @@ use sigverify_stage::SigVerifyStage;
use std::io::Write;
use std::net::UdpSocket;
use std::sync::atomic::AtomicBool;
use std::sync::{Arc, Mutex};
use std::sync::Arc;
use std::thread::JoinHandle;
use std::time::Duration;
use streamer::BlobReceiver;
@ -81,7 +81,7 @@ impl Tpu {
bank.clone(),
exit.clone(),
blob_recycler.clone(),
Mutex::new(writer),
writer,
record_stage.entry_receiver,
);
let mut thread_hdls = vec![

View File

@ -49,24 +49,27 @@ impl WriteStage {
bank: Arc<Bank>,
exit: Arc<AtomicBool>,
blob_recycler: BlobRecycler,
writer: Mutex<W>,
writer: W,
entry_receiver: Receiver<Vec<Entry>>,
) -> Self {
let (blob_sender, blob_receiver) = channel();
let thread_hdl = Builder::new()
.name("solana-writer".to_string())
.spawn(move || loop {
.spawn(move || {
let entry_writer = EntryWriter::new(&bank);
let _ = Self::write_and_send_entries(
&entry_writer,
&blob_sender,
&blob_recycler,
&writer,
&entry_receiver,
);
if exit.load(Ordering::Relaxed) {
info!("broadcat_service exiting");
break;
let writer = Mutex::new(writer);
loop {
let _ = Self::write_and_send_entries(
&entry_writer,
&blob_sender,
&blob_recycler,
&writer,
&entry_receiver,
);
if exit.load(Ordering::Relaxed) {
info!("broadcat_service exiting");
break;
}
}
})
.unwrap();