@@ -13,7 +13,7 @@ DECLARE
1313 v_run_failed boolean ;
1414 v_step_failed boolean ;
1515 v_step_skipped boolean ;
16- v_when_failed text ;
16+ v_when_exhausted text ;
1717 v_task_exhausted boolean ; -- True if task has exhausted retries
1818 v_flow_slug_for_deps text ; -- Used for decrementing remaining_deps on plain skip
1919begin
@@ -63,11 +63,11 @@ flow_info AS (
6363 FROM pgflow .runs r
6464 WHERE r .run_id = fail_task .run_id
6565),
66- config AS (
66+ config AS (
6767 SELECT
6868 COALESCE(s .opt_max_attempts , f .opt_max_attempts ) AS opt_max_attempts,
6969 COALESCE(s .opt_base_delay , f .opt_base_delay ) AS opt_base_delay,
70- s .when_failed
70+ s .when_exhausted
7171 FROM pgflow .steps s
7272 JOIN pgflow .flows f ON f .flow_slug = s .flow_slug
7373 JOIN flow_info fi ON fi .flow_slug = s .flow_slug
@@ -95,53 +95,53 @@ fail_or_retry_task as (
9595 AND task .status = ' started'
9696 RETURNING *
9797),
98- -- Determine if task exhausted retries and get when_failed mode
99- task_status AS (
100- SELECT
101- (select status from fail_or_retry_task) AS new_task_status,
102- (select when_failed from config) AS when_failed_mode ,
98+ -- Determine if task exhausted retries and get when_exhausted mode
99+ task_status AS (
100+ SELECT
101+ (select status from fail_or_retry_task) AS new_task_status,
102+ (select when_exhausted from config) AS when_exhausted_mode ,
103103 -- Task is exhausted when it's failed (no more retries)
104104 ((select status from fail_or_retry_task) = ' failed' ) AS is_exhausted
105105),
106106maybe_fail_step AS (
107107 UPDATE pgflow .step_states
108108 SET
109- -- Status logic:
110- -- - If task not exhausted (retrying): keep current status
111- -- - If exhausted AND when_failed ='fail': set to 'failed'
112- -- - If exhausted AND when_failed IN ('skip', 'skip-cascade'): set to 'skipped'
113- status = CASE
114- WHEN NOT (select is_exhausted from task_status) THEN pgflow .step_states .status
115- WHEN (select when_failed_mode from task_status) = ' fail' THEN ' failed'
116- ELSE ' skipped' -- skip or skip-cascade
117- END,
109+ -- Status logic:
110+ -- - If task not exhausted (retrying): keep current status
111+ -- - If exhausted AND when_exhausted ='fail': set to 'failed'
112+ -- - If exhausted AND when_exhausted IN ('skip', 'skip-cascade'): set to 'skipped'
113+ status = CASE
114+ WHEN NOT (select is_exhausted from task_status) THEN pgflow .step_states .status
115+ WHEN (select when_exhausted_mode from task_status) = ' fail' THEN ' failed'
116+ ELSE ' skipped' -- skip or skip-cascade
117+ END,
118118 failed_at = CASE
119- WHEN (select is_exhausted from task_status) AND (select when_failed_mode from task_status) = ' fail' THEN now()
120- ELSE NULL
121- END,
119+ WHEN (select is_exhausted from task_status) AND (select when_exhausted_mode from task_status) = ' fail' THEN now()
120+ ELSE NULL
121+ END,
122122 error_message = CASE
123123 WHEN (select is_exhausted from task_status) THEN fail_task .error_message
124124 ELSE NULL
125125 END,
126126 skip_reason = CASE
127- WHEN (select is_exhausted from task_status) AND (select when_failed_mode from task_status) IN (' skip' , ' skip-cascade' ) THEN ' handler_failed'
127+ WHEN (select is_exhausted from task_status) AND (select when_exhausted_mode from task_status) IN (' skip' , ' skip-cascade' ) THEN ' handler_failed'
128128 ELSE pgflow .step_states .skip_reason
129129 END,
130130 skipped_at = CASE
131- WHEN (select is_exhausted from task_status) AND (select when_failed_mode from task_status) IN (' skip' , ' skip-cascade' ) THEN now()
131+ WHEN (select is_exhausted from task_status) AND (select when_exhausted_mode from task_status) IN (' skip' , ' skip-cascade' ) THEN now()
132132 ELSE pgflow .step_states .skipped_at
133133 END,
134134 -- Clear remaining_tasks when skipping (required by remaining_tasks_state_consistency constraint)
135135 remaining_tasks = CASE
136- WHEN (select is_exhausted from task_status) AND (select when_failed_mode from task_status) IN (' skip' , ' skip-cascade' ) THEN NULL
136+ WHEN (select is_exhausted from task_status) AND (select when_exhausted_mode from task_status) IN (' skip' , ' skip-cascade' ) THEN NULL
137137 ELSE pgflow .step_states .remaining_tasks
138138 END
139139 FROM fail_or_retry_task
140140 WHERE pgflow .step_states .run_id = fail_task .run_id
141141 AND pgflow .step_states .step_slug = fail_task .step_slug
142142 RETURNING pgflow .step_states .*
143143)
144- -- Update run status: only fail when when_failed ='fail' and step was failed
144+ -- Update run status: only fail when when_exhausted ='fail' and step was failed
145145UPDATE pgflow .runs
146146SET status = CASE
147147 WHEN (select status from maybe_fail_step) = ' failed' THEN ' failed'
@@ -159,9 +159,9 @@ SET status = CASE
159159WHERE pgflow .runs .run_id = fail_task .run_id
160160RETURNING (status = ' failed' ) INTO v_run_failed;
161161
162- -- Capture when_failed mode and check if step was skipped for later processing
163- SELECT s .when_failed INTO v_when_failed
164- FROM pgflow .steps s
162+ -- Capture when_exhausted mode and check if step was skipped for later processing
163+ SELECT s .when_exhausted INTO v_when_exhausted
164+ FROM pgflow .steps s
165165JOIN pgflow .runs r ON r .flow_slug = s .flow_slug
166166WHERE r .run_id = fail_task .run_id
167167 AND s .step_slug = fail_task .step_slug ;
@@ -194,8 +194,8 @@ IF v_step_failed THEN
194194 );
195195END IF;
196196
197- -- Handle step skipping (when_failed = 'skip' or 'skip-cascade')
198- IF v_step_skipped THEN
197+ -- Handle step skipping (when_exhausted = 'skip' or 'skip-cascade')
198+ IF v_step_skipped THEN
199199 -- Send broadcast event for step skipped
200200 PERFORM realtime .send (
201201 jsonb_build_object(
@@ -212,8 +212,8 @@ IF v_step_skipped THEN
212212 false
213213 );
214214
215- -- For skip-cascade: cascade skip to all downstream dependents
216- IF v_when_failed = ' skip-cascade' THEN
215+ -- For skip-cascade: cascade skip to all downstream dependents
216+ IF v_when_exhausted = ' skip-cascade' THEN
217217 PERFORM pgflow ._cascade_force_skip_steps (fail_task .run_id , fail_task .step_slug , ' handler_failed' );
218218 ELSE
219219 -- For plain 'skip': decrement remaining_deps on dependent steps
0 commit comments