Limit sticky mutex to WriteStage
This commit is contained in:
parent
17de79a83a
commit
56e37ad2f4
|
@ -34,7 +34,7 @@ use sigverify_stage::SigVerifyStage;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
use std::net::UdpSocket;
|
use std::net::UdpSocket;
|
||||||
use std::sync::atomic::AtomicBool;
|
use std::sync::atomic::AtomicBool;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::Arc;
|
||||||
use std::thread::JoinHandle;
|
use std::thread::JoinHandle;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use streamer::BlobReceiver;
|
use streamer::BlobReceiver;
|
||||||
|
@ -81,7 +81,7 @@ impl Tpu {
|
||||||
bank.clone(),
|
bank.clone(),
|
||||||
exit.clone(),
|
exit.clone(),
|
||||||
blob_recycler.clone(),
|
blob_recycler.clone(),
|
||||||
Mutex::new(writer),
|
writer,
|
||||||
record_stage.entry_receiver,
|
record_stage.entry_receiver,
|
||||||
);
|
);
|
||||||
let mut thread_hdls = vec![
|
let mut thread_hdls = vec![
|
||||||
|
|
|
@ -49,24 +49,27 @@ impl WriteStage {
|
||||||
bank: Arc<Bank>,
|
bank: Arc<Bank>,
|
||||||
exit: Arc<AtomicBool>,
|
exit: Arc<AtomicBool>,
|
||||||
blob_recycler: BlobRecycler,
|
blob_recycler: BlobRecycler,
|
||||||
writer: Mutex<W>,
|
writer: W,
|
||||||
entry_receiver: Receiver<Vec<Entry>>,
|
entry_receiver: Receiver<Vec<Entry>>,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let (blob_sender, blob_receiver) = channel();
|
let (blob_sender, blob_receiver) = channel();
|
||||||
let thread_hdl = Builder::new()
|
let thread_hdl = Builder::new()
|
||||||
.name("solana-writer".to_string())
|
.name("solana-writer".to_string())
|
||||||
.spawn(move || loop {
|
.spawn(move || {
|
||||||
let entry_writer = EntryWriter::new(&bank);
|
let entry_writer = EntryWriter::new(&bank);
|
||||||
let _ = Self::write_and_send_entries(
|
let writer = Mutex::new(writer);
|
||||||
&entry_writer,
|
loop {
|
||||||
&blob_sender,
|
let _ = Self::write_and_send_entries(
|
||||||
&blob_recycler,
|
&entry_writer,
|
||||||
&writer,
|
&blob_sender,
|
||||||
&entry_receiver,
|
&blob_recycler,
|
||||||
);
|
&writer,
|
||||||
if exit.load(Ordering::Relaxed) {
|
&entry_receiver,
|
||||||
info!("broadcat_service exiting");
|
);
|
||||||
break;
|
if exit.load(Ordering::Relaxed) {
|
||||||
|
info!("broadcat_service exiting");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
Loading…
Reference in New Issue