Skip to content

Commit 6d91b56

Browse files
authored
add failure messages to backend + tauri (#1141)
1 parent 3783c19 commit 6d91b56

File tree

15 files changed

+160
-23
lines changed

15 files changed

+160
-23
lines changed

.sqlx/query-9b99ccd0baf9a4b74d8903f63e3a3dcf4c09b75cad978f0532388cbd743b7516.json

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-243afe0bc574f9f233c7797add9faf96440e2bafd52032e07951272fb1ec78b1.json renamed to .sqlx/query-a2c9e2f61eba666254f8432b3c50a0a7738ee3b3faa77c5281bc8e4af96159b9.json

Lines changed: 31 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/api_clients/artcraft/artcraft_api_defs/src/jobs/list_session_jobs.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ pub struct ListSessionStatusDetailsResponse {
110110
/// An enum the frontend can use to display localized/I18N error
111111
/// messages. These pertain to both transient and permanent failures.
112112
pub maybe_failure_category_updated: Option<FrontendFailureCategoryForApiClients>,
113+
114+
/// User-facing failure messages
115+
pub maybe_failure_message: Option<String>,
113116

114117
/// This is an integer number between 0 and 100 (both inclusive) that
115118
/// reports the completeness.

crates/desktop/artcraft/src/services/storyteller/threads/storyteller_task_polling_thread/handle_storyteller_failed_job.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ use log::info;
1010
use sqlite_tasks::queries::task::Task;
1111
use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs};
1212
use tauri::AppHandle;
13+
use enums::tauri::tasks::task_failure_type::TaskFailureType;
14+
use sqlite_tasks::queries::update_task_status_with_rich_failure::{update_task_status_with_rich_failure, UpdateTaskWithRichFailureArgs};
1315

1416
pub async fn handle_failed_job(
1517
app_handle: &AppHandle,
@@ -19,10 +21,19 @@ pub async fn handle_failed_job(
1921
) -> AnyhowResult<()> {
2022
info!("Marking storyteller job as failed: {:?}", task.id);
2123

22-
update_task_status(UpdateTaskArgs {
24+
let maybe_failure_type = job.status
25+
.maybe_failure_category_updated
26+
.as_ref()
27+
.map(|val| TaskFailureType::from_frontend_failure_category_for_api(val));
28+
29+
let maybe_failure_message = job.status.maybe_failure_message.as_deref();
30+
31+
update_task_status_with_rich_failure(UpdateTaskWithRichFailureArgs {
2332
db: task_database.get_connection(),
2433
task_id: &task.id,
2534
status: TaskStatus::CompleteFailure,
35+
maybe_failure_type,
36+
maybe_failure_message,
2637
}).await?;
2738

2839
let service = to_generation_service_provider(task.provider);

crates/schema/database/mysql_queries/src/queries/generic_inference/web/batch_get_inference_job_status.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ SELECT
100100
jobs.maybe_inference_args,
101101
102102
jobs.frontend_failure_category as maybe_frontend_failure_category,
103+
jobs.failure_reason,
103104
104105
jobs.on_success_result_entity_type as maybe_result_entity_type,
105106
jobs.on_success_result_entity_token as maybe_result_entity_token,
@@ -255,6 +256,7 @@ fn raw_records_to_public_result(records: Vec<RawGenericInferenceJobStatus>) -> V
255256
maybe_assigned_cluster: record.maybe_assigned_cluster,
256257
maybe_first_started_at: record.maybe_first_started_at,
257258
maybe_frontend_failure_category: record.maybe_frontend_failure_category,
259+
failure_reason: record.failure_reason,
258260
request_details: RequestDetails {
259261
maybe_product_category: record.product_category,
260262
inference_category: record.inference_category,
@@ -316,6 +318,7 @@ struct RawGenericInferenceJobStatus {
316318
pub maybe_assigned_cluster: Option<String>,
317319

318320
pub maybe_frontend_failure_category: Option<FrontendFailureCategory>,
321+
pub failure_reason: Option<String>,
319322

320323
pub is_keepalive_required: i8,
321324

@@ -369,6 +372,7 @@ impl FromRow<'_, MySqlRow> for RawGenericInferenceJobStatus {
369372
maybe_assigned_worker: row.try_get("maybe_assigned_worker")?,
370373
maybe_assigned_cluster: row.try_get("maybe_assigned_cluster")?,
371374
maybe_frontend_failure_category: row.try_get("maybe_frontend_failure_category")?,
375+
failure_reason: row.try_get("failure_reason")?,
372376
is_keepalive_required: row.try_get("is_keepalive_required")?,
373377
maybe_first_started_at: row.try_get("maybe_first_started_at")?,
374378
maybe_successfully_completed_at: row.try_get("maybe_successfully_completed_at")?,

crates/schema/database/mysql_queries/src/queries/generic_inference/web/get_inference_job_status.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ SELECT
5959
jobs.maybe_inference_args,
6060
6161
jobs.frontend_failure_category as `maybe_frontend_failure_category: enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory`,
62+
jobs.failure_reason,
6263
6364
jobs.on_success_result_entity_type as maybe_result_entity_type,
6465
jobs.on_success_result_entity_token as maybe_result_entity_token,
@@ -231,6 +232,7 @@ fn raw_record_to_public_result(record: RawGenericInferenceJobStatus) -> GenericI
231232
maybe_assigned_cluster: record.maybe_assigned_cluster,
232233
maybe_first_started_at: record.maybe_first_started_at,
233234
maybe_frontend_failure_category: record.maybe_frontend_failure_category,
235+
failure_reason: record.failure_reason,
234236
request_details: RequestDetails {
235237
maybe_product_category: record.product_category,
236238
inference_category: record.inference_category,
@@ -290,6 +292,7 @@ struct RawGenericInferenceJobStatus {
290292
pub maybe_assigned_cluster: Option<String>,
291293

292294
pub maybe_frontend_failure_category: Option<FrontendFailureCategory>,
295+
pub failure_reason: Option<String>,
293296

294297
pub is_keepalive_required: i8,
295298

crates/schema/database/mysql_queries/src/queries/generic_inference/web/job_status.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ pub struct GenericInferenceJobStatus {
2525
pub maybe_first_started_at: Option<DateTime<Utc>>,
2626

2727
pub maybe_frontend_failure_category: Option<FrontendFailureCategory>,
28+
pub failure_reason: Option<String>,
2829

2930
pub request_details: RequestDetails,
3031
pub maybe_result_details: Option<ResultDetails>,

crates/schema/database/mysql_queries/src/queries/generic_inference/web/list_session_jobs.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ SELECT
166166
jobs.maybe_inference_args,
167167
168168
jobs.frontend_failure_category as maybe_frontend_failure_category,
169+
jobs.failure_reason,
169170
170171
jobs.on_success_result_entity_type as maybe_result_entity_type,
171172
jobs.on_success_result_entity_token as maybe_result_entity_token,
@@ -321,6 +322,7 @@ fn raw_records_to_public_result(records: Vec<RawGenericInferenceJobStatus>) -> V
321322
maybe_assigned_cluster: record.maybe_assigned_cluster,
322323
maybe_first_started_at: record.maybe_first_started_at,
323324
maybe_frontend_failure_category: record.maybe_frontend_failure_category,
325+
failure_reason: record.failure_reason,
324326
request_details: RequestDetails {
325327
maybe_product_category: record.product_category,
326328
inference_category: record.inference_category,
@@ -382,6 +384,7 @@ struct RawGenericInferenceJobStatus {
382384
pub maybe_assigned_cluster: Option<String>,
383385

384386
pub maybe_frontend_failure_category: Option<FrontendFailureCategory>,
387+
pub failure_reason: Option<String>,
385388

386389
pub is_keepalive_required: i8,
387390

@@ -435,6 +438,7 @@ impl FromRow<'_, MySqlRow> for RawGenericInferenceJobStatus {
435438
maybe_assigned_worker: row.try_get("maybe_assigned_worker")?,
436439
maybe_assigned_cluster: row.try_get("maybe_assigned_cluster")?,
437440
maybe_frontend_failure_category: row.try_get("maybe_frontend_failure_category")?,
441+
failure_reason: row.try_get("failure_reason")?,
438442
is_keepalive_required: row.try_get("is_keepalive_required")?,
439443
maybe_first_started_at: row.try_get("maybe_first_started_at")?,
440444
maybe_successfully_completed_at: row.try_get("maybe_successfully_completed_at")?,

crates/schema/database/sqlite_tasks/src/queries/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ pub mod nuke_all_tasks;
99
pub mod task;
1010
pub mod update_successful_task_status_with_metadata;
1111
pub mod update_successful_task_status_with_metadata_by_provider;
12-
pub mod update_task_status;
12+
pub mod update_task_status;
13+
pub mod update_task_status_with_rich_failure;

0 commit comments

Comments
 (0)