diff --git a/Cargo.lock b/Cargo.lock index 93e74a85..0dcebd8b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -824,6 +824,7 @@ dependencies = [ "bd-matcher", "bd-network-quality", "bd-noop-network", + "bd-panic", "bd-proto", "bd-resource-utilization", "bd-runtime", diff --git a/bd-client-stats-store/src/lib.rs b/bd-client-stats-store/src/lib.rs index 96eb6a48..f30f52dc 100644 --- a/bd-client-stats-store/src/lib.rs +++ b/bd-client-stats-store/src/lib.rs @@ -566,7 +566,7 @@ impl Collector { }) })? { MetricData::Counter(counter) => Ok(counter.clone()), - MetricData::Histogram(_) => unreachable!(), + MetricData::Histogram(_) => Err(Error::ChangedType), } } @@ -576,7 +576,7 @@ impl Collector { MetricData::Histogram(Histogram::default()) })? { MetricData::Histogram(histogram) => Ok(histogram.clone()), - MetricData::Counter(_) => unreachable!(), + MetricData::Counter(_) => Err(Error::ChangedType), } } } diff --git a/bd-logger/Cargo.toml b/bd-logger/Cargo.toml index d54c1436..67e8240b 100644 --- a/bd-logger/Cargo.toml +++ b/bd-logger/Cargo.toml @@ -32,6 +32,7 @@ bd-log-metadata.path = "../bd-log-metadata" bd-log-primitives.path = "../bd-log-primitives" bd-matcher.path = "../bd-matcher" bd-network-quality.path = "../bd-network-quality" +bd-panic.path = "../bd-panic" bd-proto.path = "../bd-proto" bd-resource-utilization.path = "../bd-resource-utilization" bd-runtime.path = "../bd-runtime" diff --git a/bd-logger/src/async_log_buffer.rs b/bd-logger/src/async_log_buffer.rs index ad775115..7cc0180f 100644 --- a/bd-logger/src/async_log_buffer.rs +++ b/bd-logger/src/async_log_buffer.rs @@ -750,9 +750,11 @@ impl AsyncLogBuffer { () = self.session_replay_recorder.run() => {}, () = self.events_listener.run() => {}, () = &mut local_shutdown => { + log::info!("LOCAL shutdown triggered, stopping async log buffer run loop"); return self; }, () = &mut self_shutdown => { + log::info!("GLOBAL shutdown triggered, stopping async log buffer run loop"); return self; }, } diff --git a/bd-logger/src/builder.rs b/bd-logger/src/builder.rs index 3a70cf0a..88cdccb6 100644 --- a/bd-logger/src/builder.rs +++ b/bd-logger/src/builder.rs @@ -127,6 +127,7 @@ impl LoggerBuilder { Pin> + 'static>>, FlushTrigger, )> { + bd_panic::default(bd_panic::PanicType::ForceAbort); log::info!( "bitdrift Capture SDK: {:?}", self.params.static_metadata.sdk_version() @@ -325,23 +326,47 @@ impl LoggerBuilder { .collect(); try_join!( - async move { api.start().await }, + async move { + api.start().await?; + + log::info!("API ENDED"); + + Ok(()) + }, async move { buffer_uploader.run().await }, async move { async_log_buffer.run(crash_logs).await; + + log::info!("ASYNC LOG ENDED"); + Ok(()) + }, + async move { + buffer_manager.process_flushes(flush_buffers_rx).await?; + + log::info!("BUFFER MANAGER ENDED"); Ok(()) }, - async move { buffer_manager.process_flushes(flush_buffers_rx).await }, async move { stats_flusher.periodic_flush().await; + + log::info!("STATS FLUSHER ENDED"); + Ok(()) + }, + async move { + crash_monitor.run().await?; + + log::info!("CRASH MONITOR ENDED"); Ok(()) }, - async move { crash_monitor.run().await }, async move { artifact_uploader.run().await; + log::info!("ARTIFACT UPLOADER ENDED"); Ok(()) } ) + .inspect_err(|e| { + log::error!("Error running logger: {:?}", e); + }) .map(|_| ()) }; @@ -388,7 +413,12 @@ impl LoggerBuilder { .build() .unwrap() .block_on(async { - handle_unexpected(f.await, "logger top level run loop"); + let result = f.await; + log::info!( + "bitdrift runtime has finished running with result: {:?}", + result + ); + handle_unexpected(result, "logger top level run loop"); }); })?;