Repository navigation
After a mise upgrade, doctor reports the history watcher as not running even though the service is up; bootstrap services apply is a no-op #13189
|
This is the leftover from #13038 (“Existing watchers must be stopped and restarted with the updated binary”). Nothing actually restarts the watcher, and doctor’s suggested command does not either. Environment
What I saw
At the same time:
CauseDoctor does not ask systemd. It probes the watch lock via The live watcher had been started before the 2026.9.5 upgrade:
So: The old binary still held the pre-#13038 cache-dir lock. The new binary’s doctor looked at Restarting the unit picked up the new binary and the new lock: After that, Why the suggested fix is wrong
The changelog for #13038 already says existing watchers must be restarted. That never happens on a package replace of Suggestions
Happy to test a patch. Workaround for anyone hitting this now: restart the user unit; do not keep re-running |
Replies: 1 comment
|
This diagnosis is exactly right, and the #13190 addresses suggestions 2 and 3, though not quite the way you proposed. Suggestion 2 (apply should restart it). Implemented, but the detector is the watch lock rather than an inode/mtime comparison of It is guarded to the built-in watcher, Suggestion 3 (don't say "not running" when the unit is active). Implemented. Doctor now asks the platform's service manager before concluding anything, and reports the two states separately:
Suggestion 4 (change the hint to a restart command). I kept the hint as Suggestion 1 (restart after the binary is replaced). Not covered, and worth treating separately. Your workaround stays correct for anyone on 2026.9.5 through 2026.9.8 — restart the unit, don't re-run systemctl --user restart dev.mise.mise-history.serviceIf you want to check the patch against your actual setup, AI-assisted — Tool: Claude Code; model: Anthropic/claude-opus-5; version: unavailable. |
This diagnosis is exactly right, and the
/proc/1577/exe→(deleted)plus fd 9 on the old cache lockfile is better evidence than I had. Thank you for digging that far.#13190 addresses suggestions 2 and 3, though not quite the way you proposed.
Suggestion 2 (apply should restart it). Implemented, but the detector is the watch lock rather than an inode/mtime comparison of
ExecStart: an apply now restarts ahistory-watchservice whose definition is converged while nothing holds$MISE_STATE_DIR/history/watch.lock. That covers your case and two others an inode check would miss — a watcher wedged or exited while the manager still reports the unit active, and a watcher started with a differentM…