diff --git a/backend/windmill-queue/src/jobs.rs b/backend/windmill-queue/src/jobs.rs index 39561175dd..9da04e0265 100644 --- a/backend/windmill-queue/src/jobs.rs +++ b/backend/windmill-queue/src/jobs.rs @@ -1258,6 +1258,7 @@ pub async fn handle_maybe_scheduled_job<'c>( Ok::<(), Error>(()) }) .map_err(|e| Error::InternalErr(format!("Pushing next scheduled job timedout: {e:#}"))) + .unwrap_or_else(|e| Err(e)) }) .retry( ConstantBuilder::default() @@ -1265,6 +1266,7 @@ pub async fn handle_maybe_scheduled_job<'c>( .with_max_times(10) .build(), ) + .when(|err| !matches!(err, Error::QuotaExceeded(_))) .notify(|err, dur| { tracing::error!( "Could not push next scheduled job, retrying in {dur:#?}, err: {err:#?}" @@ -1272,16 +1274,11 @@ pub async fn handle_maybe_scheduled_job<'c>( }) .sleep(tokio::time::sleep); match push_next_job_future.await { - Ok(Ok(())) => Ok(()), - err @ _ => { - let err_str = match &err { - Ok(Ok(())) => unreachable!(), - Ok(Err(err)) => err.to_string(), - Err(err) => err.to_string(), - }; + Ok(()) => Ok(()), + Err(err) => { let update_schedule = sqlx::query!( "UPDATE schedule SET enabled = false, error = $1 WHERE workspace_id = $2 AND path = $3", - err_str, + err.to_string(), &schedule.workspace_id, &schedule.path ) @@ -1290,17 +1287,17 @@ pub async fn handle_maybe_scheduled_job<'c>( match update_schedule { Ok(_) => { match err { - Ok(Err(Error::QuotaExceeded(_))) => {} + Error::QuotaExceeded(_) => {} _ => { report_error_to_workspace_handler_or_critical_side_channel(job, db, - format!("Could not schedule next job for {} with err {}. Schedule disabled", schedule.path, err_str) + format!("Could not schedule next job for {} with err {}. Schedule disabled", schedule.path, err.to_string()) ).await; } } Ok(()) } Err(disable_err) => match err { - Ok(Err(err2 @ Error::QuotaExceeded(_))) => Err(err2), + Error::QuotaExceeded(_) => Err(err), _ => { report_error_to_workspace_handler_or_critical_side_channel(job, db, format!("Could not schedule next job for {} and could not disable schedule with err {}. Will retry", schedule.path, disable_err)