feat: add job_id and flow_path to flow step error objects (#11941)

* feat: add job_id to step error objects in bun, deno, python and php wrappers

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: add job_id to the duckdb data-test step error

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: add flow_path to step error objects

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: close the job_id guard before flow_path in the deno wrapper

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
hugocasa
2026-10-22 16:34:08 +02:00
committed by GitHub
co-authored by Claude Opus 5.5
parent dc1fb5087b
commit eeb48f0c26
5 changed files with 46 additions and 0 deletions
@@ -2828,6 +2828,14 @@ try {{
if (step_id) {{
err["step_id"] = step_id;
}}
let job_id = process.env.WM_JOB_ID;
if (job_id) {{
err["job_id"] = job_id;
}}
let flow_path = process.env.WM_FLOW_PATH;
if (flow_path) {{
err["flow_path"] = flow_path;
}}
const extra = {{}};
Object.getOwnPropertyNames(e).forEach((key) => {{
if (['line', 'name', 'stack', 'column', 'message', 'sourceURL', 'originalLine', 'originalColumn'].includes(key)) {{
@@ -2894,6 +2902,14 @@ try {{
if (step_id) {{
err["step_id"] = step_id;
}}
let job_id = process.env.WM_JOB_ID;
if (job_id) {{
err["job_id"] = job_id;
}}
let flow_path = process.env.WM_FLOW_PATH;
if (flow_path) {{
err["flow_path"] = flow_path;
}}
const extra = {{}};
Object.getOwnPropertyNames(e).forEach((key) => {{
if (['line', 'name', 'stack', 'column', 'message', 'sourceURL', 'originalLine', 'originalColumn'].includes(key)) {{
@@ -387,6 +387,14 @@ try {{
if (step_id) {{
err["step_id"] = step_id;
}}
let job_id = Deno.env.get("WM_JOB_ID");
if (job_id) {{
err["job_id"] = job_id;
}}
let flow_path = Deno.env.get("WM_FLOW_PATH");
if (flow_path) {{
err["flow_path"] = flow_path;
}}
await Deno.writeTextFile("result.json", JSON.stringify(err));
Deno.exit(1);
}}
@@ -1792,6 +1792,8 @@ pub async fn do_duckdb(
return Err(Error::ExecutionRawError(to_raw_value(&json!({
"message": message,
"name": "ExecutionErr",
"flow_path": reserved_variables.get("WM_FLOW_PATH").filter(|p| !p.is_empty()),
"job_id": job.id,
"step_id": job.flow_step_id,
"data_tests": data_tests,
}))));
@@ -529,6 +529,14 @@ try {{
if ($step_id) {{
$err["step_id"] = $step_id;
}}
$job_id = getenv('WM_JOB_ID');
if ($job_id) {{
$err["job_id"] = $job_id;
}}
$flow_path = getenv('WM_FLOW_PATH');
if ($flow_path) {{
$err["flow_path"] = $flow_path;
}}
file_put_contents("result.json", json_encode($err));
exit(1);
}}
@@ -1003,6 +1003,12 @@ except BaseException as e:
flow_node_id = os.environ.get('WM_FLOW_STEP_ID')
if flow_node_id:
err['step_id'] = flow_node_id
job_id = os.environ.get('WM_JOB_ID')
if job_id:
err['job_id'] = job_id
flow_path = os.environ.get('WM_FLOW_PATH')
if flow_path:
err['flow_path'] = flow_path
err_json = json.dumps(err, separators=(',', ':'), default=str).replace('\n', '')
f.write(err_json)
sys.exit(1)
@@ -1073,6 +1079,12 @@ except BaseException as e:
flow_node_id = os.environ.get('WM_FLOW_STEP_ID')
if flow_node_id:
err['step_id'] = flow_node_id
job_id = os.environ.get('WM_JOB_ID')
if job_id:
err['job_id'] = job_id
flow_path = os.environ.get('WM_FLOW_PATH')
if flow_path:
err['flow_path'] = flow_path
err_json = json.dumps(err, separators=(',', ':'), default=str).replace('\n', '')
f.write(err_json)
sys.exit(1)