From 15a783d5080bd2dd2cb8d1ec3ccf936eef46a533 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 20 Aug 2024 20:52:48 -0400 Subject: [PATCH] safe delete on failures --- .../process_video_style_transfer_job.rs | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/crates/service/job/inference_job/src/job/job_types/workflow/video_style_transfer/process_video_style_transfer_job.rs b/crates/service/job/inference_job/src/job/job_types/workflow/video_style_transfer/process_video_style_transfer_job.rs index 1e46b46208..3ea2ae1feb 100644 --- a/crates/service/job/inference_job/src/job/job_types/workflow/video_style_transfer/process_video_style_transfer_job.rs +++ b/crates/service/job/inference_job/src/job/job_types/workflow/video_style_transfer/process_video_style_transfer_job.rs @@ -528,7 +528,7 @@ pub async fn process_video_style_transfer_job(deps: &JobDependencies, job: &Avai // ==================== VALIDATE AND SAVE RESULTS ======================== // - let media_file_token = validate_and_save_results(SaveResultsArgs { + let result = validate_and_save_results(SaveResultsArgs { job, deps: &deps, job_args: &job_args, @@ -537,7 +537,24 @@ pub async fn process_video_style_transfer_job(deps: &JobDependencies, job: &Avai videos: &videos, job_progress_reporter: &mut job_progress_reporter, inference_duration, - }).await?; + }).await; + + let media_file_token = match result { + Ok(token) => token, + Err(err) => { + error!("Error validating and saving results: {:?}", err); + safe_delete_all_input_videos(&videos); + safe_delete_files_and_directories(&[ + positive_prompt_file.as_path(), + &negative_prompt_file, + &travel_prompt_file, + &preview_frames_dir, + &output_dir, + work_temp_dir.path(), + ]); + return Err(err); + } + }; // ==================== (OPTIONAL) DEBUG SLEEP ==================== // @@ -593,6 +610,20 @@ pub async fn process_video_style_transfer_job(deps: &JobDependencies, job: &Avai }) } +fn safe_delete_files_and_directories>(paths: &[P]) { + for path in paths { + let p = path.as_ref(); + if p.is_file() { + safe_delete_temp_file(p); + } else if p.is_dir() { + safe_recursively_delete_files(p); + safe_delete_temp_directory(p); + } else { + warn!("Path {:?} is neither a file nor a directory", p); + } + } +} + fn safe_delete_all_input_videos(videos: &VideoPathing) { safe_delete_primary_videos(&videos.primary_video);