diff --git a/backend/windmill-worker/src/go_executor.rs b/backend/windmill-worker/src/go_executor.rs index a08e2f6796..3360b1006c 100644 --- a/backend/windmill-worker/src/go_executor.rs +++ b/backend/windmill-worker/src/go_executor.rs @@ -189,6 +189,7 @@ func Run(req Req) (interface{{}}, error){{ false, worker_name, &job.workspace_id, + "go build", ) .await?; @@ -228,6 +229,7 @@ func Run(req Req) (interface{{}}, error){{ !*DISABLE_NSJAIL, worker_name, &job.workspace_id, + "go run", ) .await?; read_result(job_dir).await @@ -272,7 +274,7 @@ pub async fn install_go_dependencies( .stderr(Stdio::piped()) .spawn()?; - handle_child(job_id, db, logs, child, false, worker_name, w_id).await?; + handle_child(job_id, db, logs, child, false, worker_name, w_id, "go init").await?; } let mut new_lockfile = false; @@ -310,9 +312,18 @@ pub async fn install_go_dependencies( .stdout(Stdio::piped()) .stderr(Stdio::piped()) .spawn()?; - handle_child(job_id, db, logs, child, false, worker_name, &w_id) - .await - .map_err(|e| Error::ExecutionErr(format!("Lock file generation failed: {e:?}")))?; + handle_child( + job_id, + db, + logs, + child, + false, + worker_name, + &w_id, + &format!("go {mod_command}"), + ) + .await + .map_err(|e| Error::ExecutionErr(format!("Lock file generation failed: {e:?}")))?; if (!new_lockfile || has_sum) && non_dep_job { return Ok("".to_string()); diff --git a/backend/windmill-worker/src/python_executor.rs b/backend/windmill-worker/src/python_executor.rs index bf4d2e5f15..28599ebe5d 100644 --- a/backend/windmill-worker/src/python_executor.rs +++ b/backend/windmill-worker/src/python_executor.rs @@ -111,9 +111,18 @@ pub async fn pip_compile( .stdout(Stdio::piped()) .stderr(Stdio::piped()) .spawn()?; - handle_child(job_id, db, logs, child, false, worker_name, &w_id) - .await - .map_err(|e| Error::ExecutionErr(format!("Lock file generation failed: {e:?}")))?; + handle_child( + job_id, + db, + logs, + child, + false, + worker_name, + &w_id, + "pip-compile", + ) + .await + .map_err(|e| Error::ExecutionErr(format!("Lock file generation failed: {e:?}")))?; let path_lock = format!("{job_dir}/requirements.txt"); let mut file = File::open(path_lock).await?; let mut req_content = "".to_string(); @@ -420,6 +429,7 @@ mount {{ !*DISABLE_NSJAIL, worker_name, &job.workspace_id, + "python run", ) .await?; read_result(job_dir).await @@ -518,7 +528,17 @@ pub async fn handle_python_reqs( .spawn()? }; - let child = handle_child(&job_id, db, logs, child, false, worker_name, &w_id).await; + let child = handle_child( + &job_id, + db, + logs, + child, + false, + worker_name, + &w_id, + &format!("pip install {req}"), + ) + .await; tracing::info!( worker_name = %worker_name, job_id = %job_id, diff --git a/backend/windmill-worker/src/worker.rs b/backend/windmill-worker/src/worker.rs index f0dd257688..95e80d8b5f 100644 --- a/backend/windmill-worker/src/worker.rs +++ b/backend/windmill-worker/src/worker.rs @@ -1241,7 +1241,7 @@ async fn handle_bash_job( .stderr(Stdio::piped()) .spawn()? }; - handle_child(&job.id, db, logs, child, !*DISABLE_NSJAIL, worker_name, &job.workspace_id).await?; + handle_child(&job.id, db, logs, child, !*DISABLE_NSJAIL, worker_name, &job.workspace_id, "bash run").await?; //for now bash jobs have an empty result object Ok(serde_json::json!(logs .lines() @@ -1415,7 +1415,7 @@ async fn handle_deno_job( .await?; // logs.push_str(format!("prepare: {:?}\n", start.elapsed().as_micros()).as_str()); // start = Instant::now(); - handle_child(&job.id, db, logs, child, false, worker_name, &job.workspace_id).await?; + handle_child(&job.id, db, logs, child, false, worker_name, &job.workspace_id, "deno run").await?; // logs.push_str(format!("execute: {:?}\n", start.elapsed().as_millis()).as_str()); read_result(job_dir).await } @@ -1722,7 +1722,9 @@ pub async fn handle_child( nsjail: bool, worker_name: &str, _w_id: &str, + child_name: &str, ) -> error::Result<()> { + let start = Instant::now(); let update_job_interval = Duration::from_millis(500); let write_logs_delay = Duration::from_millis(500); @@ -1956,6 +1958,7 @@ pub async fn handle_child( let (wait_result, _) = tokio::join!(wait_on_child, lines); + tracing::info!(%job_id, "child process '{child_name}' for {job_id} took {}ms", start.elapsed().as_millis()); match wait_result { _ if *too_many_logs.borrow() => Err(Error::ExecutionErr(format!( "logs or result reached limit. (current max size: {MAX_RESULT_SIZE} characters)"