Exit write_stage on channel errors
This commit is contained in:
committed by
Greg Fitzgerald
parent
b95db62be3
commit
82c86daa78
@ -7,12 +7,12 @@ use entry::Entry;
|
|||||||
use entry_writer::EntryWriter;
|
use entry_writer::EntryWriter;
|
||||||
use ledger::Block;
|
use ledger::Block;
|
||||||
use packet::BlobRecycler;
|
use packet::BlobRecycler;
|
||||||
use result::Result;
|
use result::{Error, Result};
|
||||||
use service::Service;
|
use service::Service;
|
||||||
use std::collections::VecDeque;
|
use std::collections::VecDeque;
|
||||||
use std::io::Write;
|
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, 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;
|
||||||
@ -57,12 +57,19 @@ impl WriteStage {
|
|||||||
.spawn(move || {
|
.spawn(move || {
|
||||||
let mut entry_writer = EntryWriter::new(&bank, writer);
|
let mut entry_writer = EntryWriter::new(&bank, writer);
|
||||||
loop {
|
loop {
|
||||||
let _ = Self::write_and_send_entries(
|
if let Err(e) = Self::write_and_send_entries(
|
||||||
&mut entry_writer,
|
&mut entry_writer,
|
||||||
&blob_sender,
|
&blob_sender,
|
||||||
&blob_recycler,
|
&blob_recycler,
|
||||||
&entry_receiver,
|
&entry_receiver,
|
||||||
);
|
) {
|
||||||
|
match e {
|
||||||
|
Error::RecvTimeoutError(RecvTimeoutError::Disconnected) => break,
|
||||||
|
Error::SendError => break,
|
||||||
|
_ => error!("{:?}", e),
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if exit.load(Ordering::Relaxed) {
|
if exit.load(Ordering::Relaxed) {
|
||||||
info!("broadcat_service exiting");
|
info!("broadcat_service exiting");
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user