Remove panics

This commit is contained in:
Mubelotix 2025-06-26 11:12:01 +02:00
parent 3fc16c627d
commit ef007d547d
No known key found for this signature in database
GPG key ID: 0406DF6C3A69B942
3 changed files with 14 additions and 11 deletions

View file

@ -100,7 +100,7 @@ pub struct EmbedderStatsView {
impl From<&EmbedderStats> for EmbedderStatsView { impl From<&EmbedderStats> for EmbedderStatsView {
fn from(stats: &EmbedderStats) -> Self { fn from(stats: &EmbedderStats) -> Self {
let errors = stats.errors.read().unwrap(); let errors = stats.errors.read().unwrap_or_else(|p| p.into_inner());
Self { Self {
total_count: stats.total_count.load(std::sync::atomic::Ordering::Relaxed), total_count: stats.total_count.load(std::sync::atomic::Ordering::Relaxed),
error_count: errors.1 as usize, error_count: errors.1 as usize,

View file

@ -30,7 +30,9 @@ pub struct EmbedderStats {
impl std::fmt::Debug for EmbedderStats { impl std::fmt::Debug for EmbedderStats {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let (error, count) = self.errors.read().unwrap().clone(); let guard = self.errors.read().unwrap_or_else(|p| p.into_inner());
let (error, count) = (guard.0.clone(), guard.1);
std::mem::drop(guard);
f.debug_struct("EmbedderStats") f.debug_struct("EmbedderStats")
.field("last_error", &error) .field("last_error", &error)
.field("total_count", &self.total_count.load(Ordering::Relaxed)) .field("total_count", &self.total_count.load(Ordering::Relaxed))

View file

@ -335,10 +335,11 @@ where
Err(retry) => { Err(retry) => {
tracing::warn!("Failed: {}", retry.error); tracing::warn!("Failed: {}", retry.error);
if let Some(embedder_stats) = &embedder_stats { if let Some(embedder_stats) = &embedder_stats {
if let Ok(mut errors) = embedder_stats.errors.write() { let stringified_error = retry.error.to_string();
errors.0 = Some(retry.error.to_string()); let mut errors =
errors.1 += 1; embedder_stats.errors.write().unwrap_or_else(|p| p.into_inner());
} errors.0 = Some(stringified_error);
errors.1 += 1;
} }
if let Some(deadline) = deadline { if let Some(deadline) = deadline {
let now = std::time::Instant::now(); let now = std::time::Instant::now();
@ -377,11 +378,11 @@ where
Ok(response) => Ok(response), Ok(response) => Ok(response),
Err(retry) => { Err(retry) => {
if let Some(embedder_stats) = &embedder_stats { if let Some(embedder_stats) = &embedder_stats {
if let Ok(mut errors) = embedder_stats.errors.write() { let stringified_error = retry.error.to_string();
errors.0 = Some(retry.error.to_string()); let mut errors = embedder_stats.errors.write().unwrap_or_else(|p| p.into_inner());
errors.1 += 1; errors.0 = Some(stringified_error);
} errors.1 += 1;
} };
Err(retry.into_error()) Err(retry.into_error())
} }
} }