From 582b74b4950634e6976f85dae103e7b76511aa04 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 29 Jan 2025 12:46:36 +0000 Subject: [PATCH 1/2] chore(agentscripts): log cmd cancel --- agent/agentscripts/agentscripts.go | 2 +- agent/agentscripts/agentscripts_other.go | 6 +++++- agent/agentscripts/agentscripts_windows.go | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/agent/agentscripts/agentscripts.go b/agent/agentscripts/agentscripts.go index b4def315fab50..25ea0ba46fcf3 100644 --- a/agent/agentscripts/agentscripts.go +++ b/agent/agentscripts/agentscripts.go @@ -290,7 +290,7 @@ func (r *Runner) run(ctx context.Context, script codersdk.WorkspaceAgentScript, cmd = cmdPty.AsExec() cmd.SysProcAttr = cmdSysProcAttr() cmd.WaitDelay = 10 * time.Second - cmd.Cancel = cmdCancel(cmd) + cmd.Cancel = cmdCancel(ctx, logger, cmd) // Expose env vars that can be used in the script for storing data // and binaries. In the future, we may want to expose more env vars diff --git a/agent/agentscripts/agentscripts_other.go b/agent/agentscripts/agentscripts_other.go index a7ab83276e67d..62d8d789ca2a4 100644 --- a/agent/agentscripts/agentscripts_other.go +++ b/agent/agentscripts/agentscripts_other.go @@ -3,8 +3,11 @@ package agentscripts import ( + "context" "os/exec" "syscall" + + "cdr.dev/slog" ) func cmdSysProcAttr() *syscall.SysProcAttr { @@ -13,8 +16,9 @@ func cmdSysProcAttr() *syscall.SysProcAttr { } } -func cmdCancel(cmd *exec.Cmd) func() error { +func cmdCancel(ctx context.Context, logger slog.Logger, cmd *exec.Cmd) func() error { return func() error { + logger.Debug(ctx, "cmdCancel: sending SIGHUP to process", slog.F("pid", -cmd.Process.Pid)) return syscall.Kill(-cmd.Process.Pid, syscall.SIGHUP) } } diff --git a/agent/agentscripts/agentscripts_windows.go b/agent/agentscripts/agentscripts_windows.go index cda1b3fcc39e1..4799d0829c3bb 100644 --- a/agent/agentscripts/agentscripts_windows.go +++ b/agent/agentscripts/agentscripts_windows.go @@ -1,17 +1,21 @@ package agentscripts import ( + "context" "os" "os/exec" "syscall" + + "cdr.dev/slog" ) func cmdSysProcAttr() *syscall.SysProcAttr { return &syscall.SysProcAttr{} } -func cmdCancel(cmd *exec.Cmd) func() error { +func cmdCancel(ctx context.Context, logger slog.Logger, cmd *exec.Cmd) func() error { return func() error { + logger.Debug(ctx, "cmdCancel: sending interrupt to process", slog.F("pid", cmd.Process.Pid)) return cmd.Process.Signal(os.Interrupt) } } From 1b4b20d4457e8187900207561c47b5c71aac98e5 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 29 Jan 2025 12:59:20 +0000 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Danny Kopping --- agent/agentscripts/agentscripts_other.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/agentscripts/agentscripts_other.go b/agent/agentscripts/agentscripts_other.go index 62d8d789ca2a4..81be68951216f 100644 --- a/agent/agentscripts/agentscripts_other.go +++ b/agent/agentscripts/agentscripts_other.go @@ -18,7 +18,7 @@ func cmdSysProcAttr() *syscall.SysProcAttr { func cmdCancel(ctx context.Context, logger slog.Logger, cmd *exec.Cmd) func() error { return func() error { - logger.Debug(ctx, "cmdCancel: sending SIGHUP to process", slog.F("pid", -cmd.Process.Pid)) + logger.Debug(ctx, "cmdCancel: sending SIGHUP to process and children", slog.F("pid", cmd.Process.Pid)) return syscall.Kill(-cmd.Process.Pid, syscall.SIGHUP) } }