From 996408d73daef1183a04111d94fe25e047a4c1ff Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 9 Jul 2024 08:26:40 +0200 Subject: [PATCH] more observability for dedicated workers --- backend/windmill-worker/src/bun_executor.rs | 4 +--- backend/windmill-worker/src/dedicated_worker.rs | 17 +++++++++++++++-- backend/windmill-worker/src/deno_executor.rs | 8 ++++---- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/backend/windmill-worker/src/bun_executor.rs b/backend/windmill-worker/src/bun_executor.rs index 3f6bbba616..ae349e85fe 100644 --- a/backend/windmill-worker/src/bun_executor.rs +++ b/backend/windmill-worker/src/bun_executor.rs @@ -1014,8 +1014,7 @@ pub async fn start_worker( let args = windmill_parser_ts::parse_deno_signature(inner_content, true, None)?.args; let dates = args .iter() - .enumerate() - .filter_map(|(i, x)| { + .filter_map(|x| { if matches!(x.typ, Typ::Datetime) { Some(x.name.clone()) } else { @@ -1050,7 +1049,6 @@ BigInt.prototype.toJSON = function () {{ return this.toString(); }}; - console.log('start'); for await (const line of Readline.createInterface({{ input: process.stdin }})) {{ diff --git a/backend/windmill-worker/src/dedicated_worker.rs b/backend/windmill-worker/src/dedicated_worker.rs index ea50d42186..fbbc161de9 100644 --- a/backend/windmill-worker/src/dedicated_worker.rs +++ b/backend/windmill-worker/src/dedicated_worker.rs @@ -151,12 +151,18 @@ pub async fn handle_dedicated_process( }, line = err_reader.next_line() => { if let Some(line) = line.expect("line is ok") { - tracing::debug!("stderr dedicated worker: {line}"); + tracing::error!("stderr dedicated worker: {line}"); logs.push_str("[stderr] "); logs.push_str(&line); logs.push_str("\n"); } else { tracing::info!("dedicated worker process exited {script_path}"); + let mut last_stdout = "".to_string(); + while let Some(line) = reader.next_line().await.ok().flatten() { + last_stdout = line; + last_stdout.push_str("\n"); + } + tracing::info!("Last stdout for {script_path}: {last_stdout}"); break; } }, @@ -193,7 +199,13 @@ pub async fn handle_dedicated_process( logs.push_str("\n"); } } else { - tracing::info!("dedicated worker process exited"); + tracing::info!("dedicated worker {script_path} process exited"); + let mut last_stderr = "".to_string(); + while let Some(line) = err_reader.next_line().await.ok().flatten() { + last_stderr = line; + last_stderr.push_str("\n"); + } + tracing::info!("Last stderr for {script_path}: {last_stderr}"); break; } }, @@ -220,6 +232,7 @@ pub async fn handle_dedicated_process( child .await .map_err(|e| anyhow::anyhow!("child process {script_path} encountered an error: {e:#}"))?; + tracing::info!("dedicated worker {script_path} child process exited successfully"); Ok(()) } diff --git a/backend/windmill-worker/src/deno_executor.rs b/backend/windmill-worker/src/deno_executor.rs index cc3d71b1e1..dec1c78aca 100644 --- a/backend/windmill-worker/src/deno_executor.rs +++ b/backend/windmill-worker/src/deno_executor.rs @@ -444,15 +444,14 @@ pub async fn start_worker( let args = windmill_parser_ts::parse_deno_signature(inner_content, true, None)?.args; let dates = args .iter() - .enumerate() - .filter_map(|(i, x)| { + .filter_map(|x| { if matches!(x.typ, Typ::Datetime) { - Some(i) + Some(x.name.clone()) } else { None } }) - .map(|x| return format!("args[{x}] = args[{x}] ? new Date(args[{x}]) : undefined")) + .map(|x| return format!("{x} = {x} ? new Date({x}) : undefined")) .join("\n"); let spread = args.into_iter().map(|x| x.name).join(","); @@ -481,6 +480,7 @@ for await (const chunk of Deno.stdin.readable) {{ }} try {{ let {{ {spread} }} = JSON.parse(line) + {dates} let res: any = await main(...[ {spread} ]); console.log("wm_res[success]:" + JSON.stringify(res ?? null, (key, value) => typeof value === 'undefined' ? null : value) + '\n'); }} catch (e) {{