From 5dd214c4604ba3804837e0202b6a3dd6b58094b5 Mon Sep 17 00:00:00 2001 From: Thomas Kowalski Date: Fri, 20 Feb 2026 09:49:53 +0100 Subject: [PATCH] refactor: change ExporterManager --- .../src/exporter/exporter_manager.rs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/libdd-profiling/src/exporter/exporter_manager.rs b/libdd-profiling/src/exporter/exporter_manager.rs index 2362d0942e..0d1ddaca1a 100644 --- a/libdd-profiling/src/exporter/exporter_manager.rs +++ b/libdd-profiling/src/exporter/exporter_manager.rs @@ -3,7 +3,6 @@ use super::ProfileExporter; use crate::{exporter::File, internal::EncodedProfile}; -use anyhow::Context; use crossbeam_channel::{Receiver, Sender}; use libdd_common::tag::Tag; use reqwest::RequestBuilder; @@ -15,7 +14,7 @@ pub enum ExporterManager { Active { cancel: CancellationToken, exporter: ProfileExporter, - handle: JoinHandle>, + handle: JoinHandle<()>, sender: Sender, receiver: Receiver, }, @@ -35,9 +34,13 @@ impl ExporterManager { let cloned_receiver: Receiver = receiver.clone(); let cloned_cancel = cancel.clone(); let handle = std::thread::spawn(move || { - let runtime = tokio::runtime::Builder::new_current_thread() + let Ok(runtime) = tokio::runtime::Builder::new_current_thread() .enable_all() - .build()?; + .build() + else { + return; + }; + runtime.block_on(async { loop { let Ok(msg) = cloned_receiver.recv() else { @@ -53,7 +56,6 @@ impl ExporterManager { // TODO: Add logging for failed uploads. } }); - Ok(()) }); Ok(Self::Active { cancel, @@ -84,14 +86,10 @@ impl ExporterManager { drop(sender); match handle.join() { - Ok(Ok(())) => { + Ok(()) => { *self = Self::Suspended { exporter, inflight }; Ok(()) } - Ok(Err(e)) => { - *self = Self::Suspended { exporter, inflight }; - Err(e).context("worker thread returned error") - } Err(_) => { *self = Self::Suspended { exporter, inflight }; Err(anyhow::anyhow!("unable to join thread"))