From a25ffcc35103a2638b840aa6a8891e2905c0065e Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 12 Jun 2025 13:12:01 -0400 Subject: [PATCH] Add enhanced logging and tracing for playlist generation --- src/video.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/video.rs b/src/video.rs index 87ca6ce..79483bc 100644 --- a/src/video.rs +++ b/src/video.rs @@ -3,7 +3,7 @@ use crate::otel::global_tracer; use actix::prelude::*; use futures::TryFutureExt; use log::{debug, error, info, trace, warn}; -use opentelemetry::trace::{Span, Tracer}; +use opentelemetry::trace::{Span, Status, Tracer}; use opentelemetry::KeyValue; use std::io::Result; use std::path::{Path, PathBuf}; @@ -234,6 +234,16 @@ impl Handler for PlaylistGenerator { playlist_path, msg.video_path.file_name().unwrap().to_str().unwrap() ); + + let tracer = global_tracer(); + let mut span = tracer + .span_builder("playlistgenerator.generate_playlist") + .with_attributes(vec![ + KeyValue::new("video_file", video_file.clone()), + KeyValue::new("playlist_file", playlist_file.clone()), + ]) + .start(&tracer); + Box::pin(async move { let wait_start = std::time::Instant::now(); let permit = semaphore @@ -245,9 +255,16 @@ impl Handler for PlaylistGenerator { "Waited for {:?} before starting ffmpeg", wait_start.elapsed() ); + span.add_event("Waited for FFMPEG semaphore", vec![ + KeyValue::new("wait_time", wait_start.elapsed().as_secs_f64()) + ]); if Path::new(&playlist_file).exists() { debug!("Playlist already exists: {}", playlist_file); + span.set_status(Status::error(format!( + "Playlist already exists: {}", + playlist_file + ))); return Err(std::io::Error::from(std::io::ErrorKind::AlreadyExists)); } @@ -281,6 +298,8 @@ impl Handler for PlaylistGenerator { if let Ok(ref res) = ffmpeg_result { debug!("ffmpeg output: {:?}", res); } + + span.set_status(Status::Ok); ffmpeg_result });