chore(buglog): bug-1873 fixed (44173f74); pc13v retest recorded for bug-1872..1877

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-09-28 06:53:37 +00:00
parent 4c13412720
commit 00ef6066e2
Signed by untrusted user: rshen
GPG key ID: 80533536B0EB651C
7 changed files with 91 additions and 10 deletions

View file

@ -52,7 +52,7 @@ src/worker/include/diskstats.h: diskstats_sum_physical() counts a device only wh
## Verification
- Test: test_nvme_disk_is_counted_and_its_partitions_are_not (pc13v's /proc/diskstats) and test_sd_mmc_and_names_with_p_are_disks_virtual_ones_are_not in src/worker/testsuite/test_diskstats.c: both RED against the old name filter (0 disks; sdp/mmcblk0 missed), GREEN after; plus two more cases
- Suites: full ASAN build (xce-build all): 113/113 suites after the updated scheduler picker-registration test; controller 1250/0, harness 141/0, worker diskstats 4/0, scheduler picker wiring 11/0 + picker registration 4/0, apiserver TestRootWarning PASS
- Live: pending: user retest on pc13v (real root xcecd); the sandbox only runs xcecd_virtual
- Live: pc13v retest at 4c134127 (debug build, 2026-09-28 14:47 +0800): `ag -i error logs/` finds nothing; `ag -i warn logs/` shows only the WAL-unencrypted advisory; the diskstats ERROR is gone
## References
- Related: bug-1586

55
.wolf/bugs/bug-1873.md Normal file
View file

@ -0,0 +1,55 @@
---
id: "bug-1873"
status: "fixed"
status_updated: "2026-09-28"
status_note: ""
component: "worker"
severity: "noise"
timestamp: "2026-09-28T03:55:19Z"
last_seen: "2026-09-28T03:58:45Z"
occurrences: 1
files: ["src/worker/src/xcecd_dbus_manager.c", "src/worker/src/xcecd.c"]
tags: ["worker", "systemd", "dbus", "logging"]
related: []
fix_commits: ["44173f74"]
---
# bug-1873: xcecd warns 'Failed to get worker pid' on every job start while systemd forks the unit
## Description
**Observed:**
```
[2026-09-28 11:55:19,212][ WARN][xcecd_dbus_manager.c:139 ] Failed to get worker pid
(13 such lines in 3 bursts, 11:55:19, 11:57:00, 11:58:44 -- one burst per batch of job starts; no ERROR followed, so every job did start)
```
**Expected:** no warning when the pid is simply not known yet and the retry finds it.
**Impact:** WARN lines on every job start that look like failures; noise only.
**Found by:** user report from a pc13v HA deploy, 2026-09-28
## Environment
- OS: NixOS 26.05 (Yarara); 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)
- Toolchain: gcc (GCC) 15.2.0, meson 1.9.1
- Build: debug (build.dbg)
- Code: scheduler-framework, a build before 44173f74 (exact commit of the 11:52 run not recorded; environment read at 4c134127 with `buglog.py env src/build.dbg/worker/xcecd`)
- Deployment: pc13v: 3-node HA (ctrl-1..3) + scheduler + apiserver, real root xcecd running jobs as systemd transient units, deploy dir /tmp/xce-ha-deploy
## Reproduction
1. Deploy on a systemd host with a real (root) xcecd
2. Submit jobs; watch xcecd.log for 'Failed to get worker pid' at each start
- Frequency: deterministic on pc13v (every burst of job starts, 13/13 in the 2026-09-28 run)
- Evidence: the xcecd.log lines pasted in the user's report, quoted above
## Root cause
After xcecd asks systemd to start the job's transient unit (xcecd-worker-<jobid>.service), it reads the unit's MainPID over D-Bus (get_systemd_job_pid(), xcecd_cgroups.c). systemd forks the unit asynchronously, so MainPID is still 0 on the first read. dbus_get_worker_pid() (xcecd_dbus_manager.c) logged every 0 as a WARN, although its caller (xcecd.c) already retries 5 times, 100 ms apart, and only gives up -- with its own ERROR -- after that.
## Fix
dbus_get_worker_pid() logs the expected miss at DEBUG, with the unit name; the caller's final ERROR now names the unit and the retry count.
## Verification
- Test: none automated -- the path needs a real systemd and D-Bus (the sandbox runs xcecd_virtual, which fakes the pid); the change is a log-level change only
- Suites: full ASAN build (xce-build all): 113/113 suites, worker included
- Live: pc13v retest at 4c134127 (debug build, 2026-09-28 14:47 +0800): `ag -i error logs/` finds nothing; `ag -i warn logs/` shows only the WAL-unencrypted advisory; no 'Failed to get worker pid'
## References
- Related: none

View file

@ -51,7 +51,7 @@ plugin_register() still adapts a job_elect_fn plugin but only marks it (plugin->
## Verification
- Test: test_legacy_picker_deprecation_flagged_on_selection_not_registration in src/scheduler/testsuite/test_picker_wiring.c (new: registration leaves legacy_picker_warned unset, selection sets it) and test_register_legacy_job_elect_fn_only_plugin_uses_wrapper_without_warning in test_plugin_picker_registration.c, which captures the log: 0 warnings at registration (it asserted 1 before the change)
- Suites: full ASAN build (xce-build all): 113/113 suites after the updated scheduler picker-registration test; controller 1250/0, harness 141/0, worker diskstats 4/0, scheduler picker wiring 11/0 + picker registration 4/0, apiserver TestRootWarning PASS
- Live: pending: user retest on pc13v (scheduler log)
- Live: pc13v retest at 4c134127 (debug build, 2026-09-28 14:47 +0800): `ag -i error logs/` finds nothing; `ag -i warn logs/` shows only the WAL-unencrypted advisory; no job_elect_fn deprecation warning
## References
- Related: none

View file

@ -51,7 +51,7 @@ rootWarning(uid, provider) returns the warning only for provider "pam" and a non
## Verification
- Test: TestRootWarning in src/frontend/apiserver/middleware/startserver_test.go (5 uid/provider cases): RED before the fix (rootWarning did not exist), GREEN after; run with `CGO_ENABLED=0 go test ./middleware/ -run TestRootWarning` (the package's TestLoadJobs needs a live apiserver and is not part of the normal Go test set)
- Suites: full ASAN build (xce-build all): 113/113 suites after the updated scheduler picker-registration test; controller 1250/0, harness 141/0, worker diskstats 4/0, scheduler picker wiring 11/0 + picker registration 4/0, apiserver TestRootWarning PASS
- Live: pending: user retest on pc13v (apiserver log)
- Live: pc13v retest at 4c134127 (debug build, 2026-09-28 14:47 +0800): `ag -i error logs/` finds nothing; `ag -i warn logs/` shows only the WAL-unencrypted advisory; no PAM warning from the apiserver
## References
- Related: none

View file

@ -53,7 +53,7 @@ cluster_init_phase2() returns -EAGAIN for that wait; ha_phase2_rc_is_waiting() (
## Verification
- Test: test_phase2_without_config_is_a_wait_not_an_error in src/controller/testsuite/test_phase2_cold_boot.c: cluster_init_phase2() with no cluster_config returns -EAGAIN (it returned -EINVAL before), and ha_phase2_rc_is_waiting() accepts only -EAGAIN
- Suites: full ASAN build (xce-build all): 113/113 suites after the updated scheduler picker-registration test; controller 1250/0, harness 141/0, worker diskstats 4/0, scheduler picker wiring 11/0 + picker registration 4/0, apiserver TestRootWarning PASS
- Live: pending: user retest on pc13v (standby logs on a fresh deploy)
- Live: pc13v retest at 4c134127 (debug build, 2026-09-28 14:47 +0800): `ag -i error logs/` finds nothing; `ag -i warn logs/` shows only the WAL-unencrypted advisory; no cluster_init_phase2 warnings on ctrl-2/ctrl-3
## References
- Related: bug-1477

View file

@ -51,7 +51,7 @@ persist_path_encrypted() checks the WAL directory for fscrypt (statx STATX_ATTR_
## Verification
- Test: test_luks_device_is_encrypted, test_lvm_on_luks_is_encrypted, test_plain_partition_and_plain_lvm_are_not and test_unknown_device_is_not_claimed_encrypted in src/controller/testsuite/test_persist_encryption.c, against a fake sysfs tree (new functions; there was no check before)
- Suites: full ASAN build (xce-build all): 113/113 suites after the updated scheduler picker-registration test; controller 1250/0, harness 141/0, worker diskstats 4/0, scheduler picker wiring 11/0 + picker registration 4/0, apiserver TestRootWarning PASS
- Live: n/a here (no encrypted volume on this host); on pc13v the warning is expected to remain for /tmp
- Live: pc13v retest at 4c134127 (debug build, 2026-09-28 14:47 +0800): `ag -i error logs/` finds nothing; `ag -i warn logs/` shows only the WAL-unencrypted advisory: the advisory remains for /tmp, which is not encrypted -- as expected
## References
- Related: none