idle: persist timeout, suppress restart fire, add debug/save/idle-timeout commands
Several idle timer fixes and new inspection capabilities: - Persist idle_timeout across daemon restarts (was reverting to 5min default) - Set fired=true on load to suppress immediate fire from stale timestamps - Add human-readable ISO timestamps to daemon-state.json for debugging - Use to_string_pretty for readable state file - Make save() public for RPC access - Remove kb_idle_minutes() — go purely off message timestamps - Add maybe_prompt_notification() with idle gate so notifications only inject via tmux when truly idle, not during active sessions - Add debug_json() for full state inspection with computed values (would_fire, block_reason, all timers) New RPC commands (schema @16-18): poc-daemon idle-timeout <secs> — set idle timeout poc-daemon save — force state persistence poc-daemon debug — dump full internal state as JSON Also: save state on clean shutdown, route module notifications through maybe_prompt_notification before submitting to queue. Co-Authored-By: ProofOfConcept <poc@bcachefs.org>
This commit is contained in:
parent
8662759d53
commit
eab656aa64
4 changed files with 207 additions and 30 deletions
|
|
@ -126,6 +126,36 @@ impl daemon::Server for DaemonImpl {
|
|||
Promise::ok(())
|
||||
}
|
||||
|
||||
fn idle_timeout(
|
||||
&mut self,
|
||||
params: daemon::IdleTimeoutParams,
|
||||
_results: daemon::IdleTimeoutResults,
|
||||
) -> Promise<(), capnp::Error> {
|
||||
let secs = pry!(params.get()).get_seconds();
|
||||
self.state.borrow_mut().handle_idle_timeout(secs);
|
||||
Promise::ok(())
|
||||
}
|
||||
|
||||
fn save(
|
||||
&mut self,
|
||||
_params: daemon::SaveParams,
|
||||
_results: daemon::SaveResults,
|
||||
) -> Promise<(), capnp::Error> {
|
||||
self.state.borrow().save();
|
||||
info!("state saved");
|
||||
Promise::ok(())
|
||||
}
|
||||
|
||||
fn debug(
|
||||
&mut self,
|
||||
_params: daemon::DebugParams,
|
||||
mut results: daemon::DebugResults,
|
||||
) -> Promise<(), capnp::Error> {
|
||||
let json = self.state.borrow().debug_json();
|
||||
results.get().set_json(&json);
|
||||
Promise::ok(())
|
||||
}
|
||||
|
||||
fn stop(
|
||||
&mut self,
|
||||
_params: daemon::StopParams,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue