close
Skip to content

daemon: refresh updater after validated binary rollout#21853

Open
euroelessar wants to merge 1 commit intomainfrom
ruslan/app-server-daemon-updater-self-refresh
Open

daemon: refresh updater after validated binary rollout#21853
euroelessar wants to merge 1 commit intomainfrom
ruslan/app-server-daemon-updater-self-refresh

Conversation

@euroelessar
Copy link
Copy Markdown
Collaborator

Why

bootstrap starts a detached pid-backed updater loop, but before this change that updater could keep running an old executable image even after install.sh replaced the managed standalone binary under CODEX_HOME. That left the updater itself behind the binary it had just rolled out, especially when the app-server was stopped or when the managed binary changed without a version-string change.

What changed

  • Track updater identity from the executable contents rather than only the reported CLI version.
  • Force the managed app-server restart path when the managed binary contents differ from the running updater image, then re-exec the updater from the managed binary once the rollout is in a safe state.
  • Distinguish a genuinely absent managed app-server from a managed process that exists but is not yet probeable, so self-refresh does not skip a required restart.
  • Keep the restart/re-exec decision under the daemon operation lock so bootstrap cannot race the handoff.
  • Update app-server-daemon/README.md to document the resulting standalone and out-of-band update behavior.

Verification

  • cargo test -p codex-app-server-daemon
  • just fix -p codex-app-server-daemon

Added focused unit coverage for:

  • content-based updater refresh decisions
  • safe updater re-exec outcomes across restart states

@euroelessar euroelessar marked this pull request as ready for review May 9, 2026 04:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant