Skip to content

Commit

Permalink
appender: name spawned thread (#2219)
Browse files Browse the repository at this point in the history
## Motivation

I find it useful when debugging applications with lots of threads to
easily identity them by their names.

## Solution

Just name the thread as other crates such as `sentry-rust` are doing.

Co-authored-by: Guillaume Desmottes <[email protected]>
  • Loading branch information
2 people authored and hawkw committed Jul 20, 2022
1 parent 5f48248 commit 9909b5b
Showing 1 changed file with 18 additions and 15 deletions.
33 changes: 18 additions & 15 deletions tracing-appender/src/worker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,22 +68,25 @@ impl<T: Write + Send + Sync + 'static> Worker<T> {

/// Creates a worker thread that processes a channel until it's disconnected
pub(crate) fn worker_thread(mut self) -> std::thread::JoinHandle<()> {
thread::spawn(move || {
loop {
match self.work() {
Ok(WorkerState::Continue) | Ok(WorkerState::Empty) => {}
Ok(WorkerState::Shutdown) | Ok(WorkerState::Disconnected) => {
let _ = self.shutdown.recv();
break;
}
Err(_) => {
// TODO: Expose a metric for IO Errors, or print to stderr
thread::Builder::new()
.name("tracing-appender".to_string())
.spawn(move || {
loop {
match self.work() {
Ok(WorkerState::Continue) | Ok(WorkerState::Empty) => {}
Ok(WorkerState::Shutdown) | Ok(WorkerState::Disconnected) => {
let _ = self.shutdown.recv();
break;
}
Err(_) => {
// TODO: Expose a metric for IO Errors, or print to stderr
}
}
}
}
if let Err(e) = self.writer.flush() {
eprintln!("Failed to flush. Error: {}", e);
}
})
if let Err(e) = self.writer.flush() {
eprintln!("Failed to flush. Error: {}", e);
}
})
.expect("failed to spawn `tracing-appender` non-blocking worker thread")
}
}

0 comments on commit 9909b5b

Please sign in to comment.