mirror of
https://github.com/coder/coder.git
synced 2025-07-12 00:14:10 +00:00
chore(agent/agentscripts): log command cancellation (#16324)
Relates to https://github.com/coder/internal/issues/329 It's currently unclear where the SIGHUP came from; adding some logging to make it more clear if it happens again in future. --------- Co-authored-by: Danny Kopping <danny@coder.com>
This commit is contained in:
@ -290,7 +290,7 @@ func (r *Runner) run(ctx context.Context, script codersdk.WorkspaceAgentScript,
|
|||||||
cmd = cmdPty.AsExec()
|
cmd = cmdPty.AsExec()
|
||||||
cmd.SysProcAttr = cmdSysProcAttr()
|
cmd.SysProcAttr = cmdSysProcAttr()
|
||||||
cmd.WaitDelay = 10 * time.Second
|
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
|
// 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
|
// and binaries. In the future, we may want to expose more env vars
|
||||||
|
@ -3,8 +3,11 @@
|
|||||||
package agentscripts
|
package agentscripts
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
|
"cdr.dev/slog"
|
||||||
)
|
)
|
||||||
|
|
||||||
func cmdSysProcAttr() *syscall.SysProcAttr {
|
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 {
|
return func() error {
|
||||||
|
logger.Debug(ctx, "cmdCancel: sending SIGHUP to process and children", slog.F("pid", cmd.Process.Pid))
|
||||||
return syscall.Kill(-cmd.Process.Pid, syscall.SIGHUP)
|
return syscall.Kill(-cmd.Process.Pid, syscall.SIGHUP)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,21 @@
|
|||||||
package agentscripts
|
package agentscripts
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
|
"cdr.dev/slog"
|
||||||
)
|
)
|
||||||
|
|
||||||
func cmdSysProcAttr() *syscall.SysProcAttr {
|
func cmdSysProcAttr() *syscall.SysProcAttr {
|
||||||
return &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 {
|
return func() error {
|
||||||
|
logger.Debug(ctx, "cmdCancel: sending interrupt to process", slog.F("pid", cmd.Process.Pid))
|
||||||
return cmd.Process.Signal(os.Interrupt)
|
return cmd.Process.Signal(os.Interrupt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user