fix(worker): deliver the job-control signal the user asked for (bug-1954)

worker_signal_callback() sent SIGTERM for a KILL request without force and
SIGSTOP for any TSTP request. job_signal_to_deliver() (new job_signal.c) now
delivers the requested signal; only a forced terminate escalates to SIGKILL.
The apiserver's default signal for a plain stop becomes SIGSTOP (it was
TSTP and relied on the worker's substitution), so a plain stop still
suspends jobs that ignore SIGTSTP.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-10-10 09:07:38 +00:00
parent e00526f9f5
commit 148557a5d5
Signed by untrusted user: rshen
GPG key ID: 80533536B0EB651C
9 changed files with 99 additions and 11 deletions

View file

@ -127,7 +127,7 @@ var JobKillSignalControlMap = map[int][]int{
var DefaultActionSignal = map[string]string{
"kill": "TERM",
"stop": "TSTP",
"stop": "STOP", // bug-1954: the worker delivers exactly this signal
"resume": "CONT",
}