docs(buglog): bug-1957 config completed (97f7c800)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-10-10 10:04:47 +00:00
parent 97f7c800f1
commit ff1de90ae3
Signed by untrusted user: rshen
GPG key ID: 80533536B0EB651C
2 changed files with 8 additions and 3 deletions

View file

@ -11,7 +11,7 @@ occurrences: 1
files: ["src/worker/src/xcecd_worker.c", "src/frontend/apiserver/backend/convert_pure.go", "src/schema/controller.capnp"]
tags: ["worker", "job-control", "signal", "lsf"]
related: ["bug-1954", "bug-1940"]
fix_commits: ["367af11a"]
fix_commits: ["367af11a", "97f7c800"]
---
# bug-1957: plain job kill and stop are single signals: no SIGKILL escalation, no catchable stop
@ -37,6 +37,7 @@ SIGTSTP first, with SIGSTOP only if the job has not stopped by itself.
indefinitely (no clean-up window followed by a guaranteed end), and a plain
stop gives the job no chance to prepare.
**Found by:** user review of the bug-1954 fix, 2026-10-10.
## Environment
- OS: no /etc/os-release; Docker container; NixOS kernel; kernel Linux 6.18.33 x86_64
- libc: glibc 2.42-47 (interpreter /nix/store/wb6rhpznjfczwlwx23zmdrrw74bayxw4-glibc-2.42-47/lib/ld-linux-x86-64.so.2)
@ -51,6 +52,7 @@ stop gives the job no chance to prepare.
3. The job keeps running.
- Frequency: deterministic (by code reading; confirmed by the RED test of the fix)
- Evidence: the code sites in Description; no logs kept.
## Root cause
The job-control path had no notion of a graceful action: `JobSignal`
carried only `signo` and `force`; the apiserver handler pre-filled a single
@ -86,6 +88,8 @@ signal exact).
- Briefs `job-time-window` and `host-failure-job-recovery` updated to reuse
this sequence for end-time kills and requeue.
UPDATE (2026-10-10): Config completed in 97f7c800: job.terminate_interval is defaulted (10 s) and validated by the loader (TestInitConf_TerminateInterval*, RED on the default case before), described in app_schema.json and documented in src/docs/xce.md. It is an API-server setting; cluster-internal kills (e.g. requeue in host-failure-job-recovery) will need the interval from cluster config.
## Verification
- Test: `src/worker/testsuite/test_job_signal.c`
`test_kill_escalates_to_sigkill_when_ignored`,