From 8d8c36d27c7cdf372d691d0e05bcb1e82f13edc8 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 14 Feb 2025 04:23:25 +0100 Subject: [PATCH] fix: display branch chosen even if emoty branch --- backend/windmill-worker/src/worker_flow.rs | 32 ++++++++++++---------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/backend/windmill-worker/src/worker_flow.rs b/backend/windmill-worker/src/worker_flow.rs index e21df1133f..864f3002b1 100644 --- a/backend/windmill-worker/src/worker_flow.rs +++ b/backend/windmill-worker/src/worker_flow.rs @@ -2419,7 +2419,7 @@ async fn push_next_flow_job( let (job_payloads, next_status) = match next_flow_transform { NextFlowTransform::Continue(job_payload, next_state) => (job_payload, next_state), - NextFlowTransform::EmptyInnerFlows => { + NextFlowTransform::EmptyInnerFlows { branch_chosen } => { let raw_status = sqlx::query_scalar!( "UPDATE v2_job_status SET flow_status = JSONB_SET(flow_status, ARRAY['modules', $1::TEXT], $2) @@ -2431,7 +2431,7 @@ async fn push_next_flow_job( job: Uuid::nil(), flow_jobs: Some(vec![]), flow_jobs_success: Some(vec![]), - branch_chosen: None, + branch_chosen: branch_chosen, approvers: vec![], failed_retries: vec![], skipped: false, @@ -3064,7 +3064,7 @@ enum ContinuePayload { } enum NextFlowTransform { - EmptyInnerFlows, + EmptyInnerFlows { branch_chosen: Option }, Continue(ContinuePayload, NextStatus), } @@ -3330,7 +3330,9 @@ async fn compute_next_flow_transform( .await?; match next_loop_status { - ForLoopStatus::EmptyIterator => Ok(NextFlowTransform::EmptyInnerFlows), + ForLoopStatus::EmptyIterator => { + Ok(NextFlowTransform::EmptyInnerFlows { branch_chosen: None }) + } ForLoopStatus::NextIteration(ns) => { next_loop_iteration( flow, @@ -3382,7 +3384,7 @@ async fn compute_next_flow_transform( }) .collect::>(); if payloads.is_empty() { - return Ok(NextFlowTransform::EmptyInnerFlows); + return Ok(NextFlowTransform::EmptyInnerFlows { branch_chosen: None }); } Ok(NextFlowTransform::Continue( ContinuePayload::ParallelJobs(payloads), @@ -3438,12 +3440,12 @@ async fn compute_next_flow_transform( )))?, }; - let (modules, modules_node) = match branch { - BranchChosen::Default => (default, default_node), + let (modules, modules_node, branch_idx) = match branch { + BranchChosen::Default => (default, default_node, 0), BranchChosen::Branch { branch } => branches .into_iter() .nth(branch) - .map(|Branch { modules, modules_node, .. }| (modules, modules_node)) + .map(|Branch { modules, modules_node, .. }| (modules, modules_node, branch + 1)) .ok_or_else(|| { Error::BadRequest(format!( "Unrecognized branch for BranchOne {status_module:?}" @@ -3457,10 +3459,10 @@ async fn compute_next_flow_transform( flow.failure_module.as_ref(), flow.same_worker, || status.step.to_string(), - || format!("{}/branchone-{}", flow_job.script_path(), status.step), + || format!("{}/branchone-{}", flow_job.script_path(), branch_idx), true, ) else { - return Ok(NextFlowTransform::EmptyInnerFlows); + return Ok(NextFlowTransform::EmptyInnerFlows { branch_chosen: Some(branch) }); }; Ok(NextFlowTransform::Continue( @@ -3480,7 +3482,7 @@ async fn compute_next_flow_transform( | FlowStatusModule::WaitingForEvents { .. } | FlowStatusModule::WaitingForExecutor { .. } => { if branches.is_empty() { - return Ok(NextFlowTransform::EmptyInnerFlows); + return Ok(NextFlowTransform::EmptyInnerFlows { branch_chosen: None }); } else if parallel { let len = branches.len(); let payloads: Vec = branches @@ -3508,7 +3510,7 @@ async fn compute_next_flow_transform( }) .collect::>(); if payloads.is_empty() { - return Ok(NextFlowTransform::EmptyInnerFlows); + return Ok(NextFlowTransform::EmptyInnerFlows { branch_chosen: None }); } return Ok(NextFlowTransform::Continue( ContinuePayload::ParallelJobs(payloads), @@ -3566,7 +3568,9 @@ async fn compute_next_flow_transform( }, false, ) else { - return Ok(NextFlowTransform::EmptyInnerFlows); + return Ok(NextFlowTransform::EmptyInnerFlows { + branch_chosen: Some(BranchChosen::Default), + }); }; Ok(NextFlowTransform::Continue( @@ -3628,7 +3632,7 @@ async fn next_loop_iteration( inner_path, true, ) else { - return Ok(NextFlowTransform::EmptyInnerFlows); + return Ok(NextFlowTransform::EmptyInnerFlows { branch_chosen: None }); }; Ok(NextFlowTransform::Continue(