58 lines
2.8 KiB
Markdown
58 lines
2.8 KiB
Markdown
---
|
|
id: "bug-1906"
|
|
status: "fixed"
|
|
status_updated: "2026-10-01"
|
|
status_note: ""
|
|
component: "xcecli"
|
|
severity: "wrong-result"
|
|
timestamp: "2026-10-01T14:32:21Z"
|
|
last_seen: "2026-10-01T14:32:21Z"
|
|
occurrences: 1
|
|
files: ["src/frontend/xcecli/cmd/jobs/list.go"]
|
|
tags: ["job-array", "error-message", "selection"]
|
|
related: []
|
|
fix_commits: ["6e631caa"]
|
|
---
|
|
|
|
# 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
|