myxce/.wolf/bugs/bug-1906.md
Rongsong Shen 6e631caa22
fix: scheduler empty-resreq JOB_UPDATE crash (bug-1904); xcecli jobs list rejection text (bug-1906)
bug-1904: both scheduler JOB_UPDATE paths parsed "" as-is:
parse_resreq() returns success with a PRIMARY container whose body is
NULL, and apply_job_task_count() wrote through it. Use ingest's default
("type == any") instead.

bug-1906: xcecli jobs list sent local selection-parse errors through
ExtractErrorMessage, which strips brackets and the quoted selection;
report them as written.

Also logs bug-1905 (xcecd_virtual ignores kill of a running job). All
three found by job-array-one-based-index task 10.2's live REST flow.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 14:48:50 +00:00

2.8 KiB

id status status_updated status_note component severity timestamp last_seen occurrences files tags related
bug-1906 open 2026-10-01 newly logged xcecli wrong-result 2026-10-01T14:32:21Z 2026-10-01T14:32:21Z 1
src/frontend/xcecli/cmd/jobs/list.go
job-array
error-message
selection

bug-1906: xcecli jobs list drops the selection and its brackets from rejection messages

Description

Observed:

$ xcecli jobs list '1-0-1790863351-0[1,3]'
failed to get parameter: [expected <job-id>, <array-id>k or <array-id>a-b]
$ xcecli jobs kill '1-0-1790863351-0[1,3]'
invalid job identity or element selection '1-0-1790863351-0[1,3]': expected <job-id>, <array-id>[k] or <array-id>[a-b]

jobs list passed local selection-parse errors through request.ExtractErrorMessage, which strips every [/] and keeps only the text after the last ": ".

Expected: the rejection names the selection as written and keeps the [k] syntax, as jobs kill does (job-array-one-based-index Requirement 5: a rejection names the rejected selection). Impact: users of jobs list cannot tell which selection was rejected, and the hint shows <array-id>k instead of <array-id>[k]. Found by: spec task (job-array-one-based-index task 10.2 live REST flow)

Environment

  • OS: no /etc/os-release; Docker container; NixOS kernel; kernel Linux 6.18.33 x86_64
  • libc: none (xcecli is a statically linked Go binary, CGO_ENABLED=0; host glibc 2.42-47)
  • Toolchain: gcc (GCC) 15.2.0, meson 1.9.1
  • Build: asan (src/build.jai)
  • Code: scheduler-framework @ 6439e585-dirty
  • Deployment: none needed (client-side parse error); seen against a single-host 3-node HA deploy

Reproduction

  1. xcecli jobs list 'garbage' </dev/null (any rejected selection; no server needed).
  • Frequency: deterministic (4/4 selections, 2026-10-01)
  • Evidence: not kept (the new test guards it)

Root cause

cmd/jobs/list.go (RunJobsList, runArrayJobStats) formatted HandleJobFilter errors with request.ExtractErrorMessage, a sanitizer meant for transport errors: it removes all brackets and keeps only the last ": "-separated part, which drops the quoted selection.

Fix

Both sites report the local parse error as written (failed to get parameter: [%v], err), without ExtractErrorMessage.

Verification

  • Test: TestRunJobsListReportsRejectedSelectionVerbatim in src/frontend/xcecli/cmd/jobs/list_test.go; RED before the fix (6 assertion failures), GREEN after
  • Suites: xcecli go vet ./... clean, go test ./... all ok (CGO_ENABLED=0); /xce-build xcecli asan rc=0
  • Live: rebuilt xcecli against the deployment: jobs list rejections now read e.g. invalid element selection '1-0-1790863351-0[40000]': element numbers must be at most 32767

References

  • Related: none