cli: wait for the daemon socket to answer ping after install/restart
systemd's Type=simple reports a unit "active" the moment its ExecStart binary is exec()'d, which for bangerd happens well before the daemon has read its config and bound /run/banger/bangerd.sock. 'banger system install' and 'banger system restart' both returned inside that window, so the very next 'banger ...' command would hit ensureDaemon, miss on a single ping, and exit with "service not reachable; run sudo banger system restart" — the same restart that had just succeeded. Smoke tripped over this on every run. Add waitForDaemonReady: poll daemonPing for up to 15s after the restart returns. Both the system install and restart paths now block until the daemon is genuinely accepting RPCs, so the next CLI invocation can talk to it without retrying. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
679cf87cfd
commit
74e5a7cedb
2 changed files with 38 additions and 0 deletions
|
|
@ -97,6 +97,9 @@ See docs/privileges.md for the full trust model.
|
|||
if err := d.runSystemctl(cmd.Context(), "restart", installmeta.DefaultService); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := d.waitForDaemonReady(cmd.Context(), paths.ResolveSystem().SocketPath); err != nil {
|
||||
return err
|
||||
}
|
||||
_, err := fmt.Fprintln(cmd.OutOrStdout(), "restarted")
|
||||
return err
|
||||
},
|
||||
|
|
@ -184,6 +187,9 @@ func (d *deps) runSystemInstall(ctx context.Context, out io.Writer, ownerFlag st
|
|||
if err := d.runSystemctl(ctx, "restart", installmeta.DefaultService); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := d.waitForDaemonReady(ctx, installmeta.DefaultSocketPath); err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = fmt.Fprintf(out, "installed\nowner: %s\nsocket: %s\nhelper_socket: %s\nservice: %s\nhelper_service: %s\n", meta.OwnerUser, installmeta.DefaultSocketPath, installmeta.DefaultRootHelperSocketPath, installmeta.DefaultService, installmeta.DefaultRootHelperService)
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue