mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-08 11:01:35 +00:00
attempt to delete files after they're uploaded
This commit is contained in:
1 parent
0d691ded80
commit
0450adb396
1 file changed
+65
-9
+65
-9
@@ -51,12 +51,13 @@ use ring::digest::{Context, Digest, SHA256};
|
||||
use sqlx::MySqlPool;
|
||||
use sqlx::mysql::MySqlPoolOptions;
|
||||
use std::fs::File;
|
||||
use std::io::{BufReader, Read};
|
||||
use std::io::{BufReader, Read, Error};
|
||||
use std::ops::Deref;
|
||||
use std::path::{PathBuf, Path};
|
||||
use std::process::Command;
|
||||
use std::time::Duration;
|
||||
use tempdir::TempDir;
|
||||
use std::fs;
|
||||
|
||||
// Buckets
|
||||
const ENV_ACCESS_KEY : &'static str = "ACCESS_KEY";
|
||||
@@ -336,8 +337,13 @@ async fn process_job(downloader: &Downloader, job: &TtsUploadJobRecord) -> Anyho
|
||||
.map(|c| c.to_string())
|
||||
.unwrap_or("".to_string());
|
||||
|
||||
let download_filename = downloader.google_drive_downloader
|
||||
.download_file(&download_url, &temp_dir).await?;
|
||||
let download_filename = match downloader.google_drive_downloader.download_file(&download_url, &temp_dir).await {
|
||||
Ok(filename) => filename,
|
||||
Err(e) => {
|
||||
delete_temp_directory(&temp_dir);
|
||||
return Err(e);
|
||||
}
|
||||
};
|
||||
|
||||
let model_type = if download_filename.to_lowercase().ends_with("zip") {
|
||||
TtsModelType::Talknet
|
||||
@@ -365,18 +371,28 @@ async fn process_job(downloader: &Downloader, job: &TtsUploadJobRecord) -> Anyho
|
||||
|
||||
match model_type {
|
||||
TtsModelType::Tacotron2 => {
|
||||
downloader.tacotron_tts_check.execute(
|
||||
let result = downloader.tacotron_tts_check.execute(
|
||||
&file_path,
|
||||
&output_metadata_fs_path,
|
||||
false,
|
||||
)?;
|
||||
);
|
||||
|
||||
if let Err(e) = result {
|
||||
delete_temp_file(&file_path);
|
||||
delete_temp_directory(&temp_dir);
|
||||
}
|
||||
},
|
||||
TtsModelType::Talknet => {
|
||||
downloader.talknet_tts_check.execute(
|
||||
let result = downloader.talknet_tts_check.execute(
|
||||
&file_path,
|
||||
&output_metadata_fs_path,
|
||||
false,
|
||||
)?;
|
||||
);
|
||||
|
||||
if let Err(e) = result {
|
||||
delete_temp_file(&file_path);
|
||||
delete_temp_directory(&temp_dir);
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@@ -386,7 +402,15 @@ async fn process_job(downloader: &Downloader, job: &TtsUploadJobRecord) -> Anyho
|
||||
|
||||
check_file_exists(&output_metadata_fs_path)?;
|
||||
|
||||
let file_metadata = read_metadata_file(&output_metadata_fs_path)?;
|
||||
let file_metadata = match read_metadata_file(&output_metadata_fs_path) {
|
||||
Ok(metadata) => metadata,
|
||||
Err(e) => {
|
||||
delete_temp_file(&file_path);
|
||||
delete_temp_file(&output_metadata_fs_path);
|
||||
delete_temp_directory(&temp_dir);
|
||||
return Err(e);
|
||||
}
|
||||
};
|
||||
|
||||
// ==================== UPLOAD MODEL FILE ==================== //
|
||||
|
||||
@@ -405,7 +429,19 @@ async fn process_job(downloader: &Downloader, job: &TtsUploadJobRecord) -> Anyho
|
||||
|
||||
redis_logger.log_status("uploading model")?;
|
||||
|
||||
downloader.bucket_client.upload_filename(&synthesizer_model_bucket_path, &file_path).await?;
|
||||
if let Err(e) = downloader.bucket_client.upload_filename(&synthesizer_model_bucket_path, &file_path).await {
|
||||
delete_temp_file(&output_metadata_fs_path);
|
||||
delete_temp_file(&file_path);
|
||||
delete_temp_directory(&temp_dir);
|
||||
return Err(e);
|
||||
}
|
||||
|
||||
// ==================== DELETE DOWNLOADED FILE ==================== //
|
||||
|
||||
// NB: We should be using a tempdir, but to make absolutely certain we don't overflow the disk...
|
||||
delete_temp_file(&output_metadata_fs_path);
|
||||
delete_temp_file(&file_path);
|
||||
delete_temp_directory(&temp_dir);
|
||||
|
||||
// ==================== SAVE RECORDS ==================== //
|
||||
|
||||
@@ -448,3 +484,23 @@ async fn process_job(downloader: &Downloader, job: &TtsUploadJobRecord) -> Anyho
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn delete_temp_file<P: AsRef<Path>>(file_path: P) {
|
||||
// NB: We should be using a tempdir, but to make absolutely certain we don't overflow the disk...
|
||||
let printable_name = file_path.as_ref().to_str().unwrap_or("bad filename");
|
||||
match fs::remove_file(&file_path) {
|
||||
Ok(_) => info!("File deleted: {}", printable_name),
|
||||
Err(e) => warn!("Could not delete file {:?} (not a fatal error): {:?}",
|
||||
printable_name, e),
|
||||
}
|
||||
}
|
||||
|
||||
fn delete_temp_directory<P: AsRef<Path>>(directory_path: P) {
|
||||
// NB: We should be using a tempdir, but to make absolutely certain we don't overflow the disk...
|
||||
let printable_name = directory_path.as_ref().to_str().unwrap_or("bad directory");
|
||||
match fs::remove_dir_all(&directory_path) {
|
||||
Ok(_) => info!("Directory deleted: {}", printable_name),
|
||||
Err(e) => warn!("Could not delete directory{:?} (not a fatal error): {:?}",
|
||||
printable_name, e),
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user