From ff3989e97ffb23da22d5e7f0c9aaec5f5f7a3de7 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 1 May 2024 23:48:23 +0200 Subject: [PATCH] refactor workspace error handler --- backend/windmill-queue/src/jobs.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/backend/windmill-queue/src/jobs.rs b/backend/windmill-queue/src/jobs.rs index 806da4ee8b..f422b1b24a 100644 --- a/backend/windmill-queue/src/jobs.rs +++ b/backend/windmill-queue/src/jobs.rs @@ -731,19 +731,17 @@ pub async fn add_completed_job< } } + #[cfg(feature = "enterprise")] if !skip_downstream_error_handlers && matches!(queued_job.job_kind, JobKind::Flow | JobKind::Script) && queued_job.parent_job.is_none() && !success { - let result = sanitize_result(result); tracing::info!( "Sending error of job {} to error handlers (if any)", queued_job.id ); - if let Err(e) = - send_error_to_global_handler(rsmq.clone(), &queued_job, db, Json(&result)).await - { + if let Err(e) = send_error_to_global_handler(rsmq.clone(), &queued_job, db, result).await { tracing::error!( "Could not run global error handler for job {}: {}", &queued_job.id, @@ -756,7 +754,7 @@ pub async fn add_completed_job< &queued_job, canceled_by.is_some(), db, - Json(&result), + result, ) .await { @@ -960,7 +958,7 @@ pub async fn send_error_to_global_handler< rsmq: Option, queued_job: &QueuedJob, db: &Pool, - result: Json<&'a T>, + result: Json<&T>, ) -> Result<(), Error> { if let Some(ref global_error_handler) = *GLOBAL_ERROR_HANDLER_PATH_IN_ADMINS_WORKSPACE { let prefixed_global_error_handler_path = if global_error_handler.starts_with("script/") @@ -970,11 +968,12 @@ pub async fn send_error_to_global_handler< } else { format!("script/{}", global_error_handler) }; + let result = sanitize_result(result); run_error_handler( rsmq, queued_job, db, - result, + Json(&result), &prefixed_global_error_handler_path, None, true, @@ -1036,12 +1035,13 @@ pub async fn send_error_to_workspace_handler< let muted = ws_error_handler_muted.unwrap_or(false); if !muted { + let result = sanitize_result(result); tracing::info!("workspace error handled for job {}", &queued_job.id); run_error_handler( rsmq, queued_job, db, - result, + Json(&result), &error_handler, error_handler_extra_args, false, @@ -1171,6 +1171,7 @@ async fn apply_schedule_handlers< let skip_downstream_error_handlers = schedule.ws_error_handler_muted; if !success { + #[cfg(feature = "enterprise")] if let Some(on_failure_path) = schedule.on_failure.clone() { let times = schedule.on_failure_times.unwrap_or(1).max(1); let exact = schedule.on_failure_exact.unwrap_or(false); @@ -1240,6 +1241,7 @@ async fn apply_schedule_handlers< } } } else { + #[cfg(feature = "enterprise")] if let Some(on_recovery_path) = schedule.on_recovery.clone() { let times = schedule.on_recovery_times.unwrap_or(1).max(1); let past_jobs = sqlx::query_as!(