Skip to content

core: fix stale curated plugin cache refresh races#16126

Merged
bolinfest merged 1 commit intomainfrom
pr16126
Mar 28, 2026
Merged

core: fix stale curated plugin cache refresh races#16126
bolinfest merged 1 commit intomainfrom
pr16126

Conversation

@bolinfest
Copy link
Copy Markdown
Collaborator

@bolinfest bolinfest commented Mar 28, 2026

Why

The plugin/list force-sync path can race app-server startup's curated plugin cache refresh.

Startup was capturing the configured curated plugin IDs from the initial config snapshot. If plugin/list with forceRemoteSync removed curated plugin entries from config.toml while that background refresh was still in flight, the startup task could recreate cache directories for plugins that had just been uninstalled.

That leaves the plugin/list response logically correct but the on-disk cache stale, which matches the flaky Ubuntu arm failure seen in codex-app-server::all suite::v2::plugin_list::plugin_list_force_remote_sync_reconciles_curated_plugin_state while validating #16047.

What

  • change codex-rs/core/src/plugins/manager.rs so startup curated-repo refresh rereads the current user config.toml before deciding which curated plugin cache entries to refresh
  • factor the configured-plugin parsing so the same logic can be reused from either the config layer stack or the persisted user config value
  • add a regression test that verifies curated plugin IDs are read from the latest user config state before cache refresh runs

Testing

  • cargo test -p codex-core configured_curated_plugin_ids_from_codex_home_reads_latest_user_config -- --nocapture
  • cargo test -p codex-app-server suite::v2::plugin_list::plugin_list_force_remote_sync_reconciles_curated_plugin_state -- --nocapture
  • just argument-comment-lint

@bolinfest bolinfest changed the title core: avoid stale curated plugin cache refresh core: fix stale curated plugin cache refresh races Mar 28, 2026
@bolinfest bolinfest merged commit c25c0d6 into main Mar 28, 2026
36 of 44 checks passed
@bolinfest bolinfest deleted the pr16126 branch March 28, 2026 22:00
@github-actions github-actions bot locked and limited conversation to collaborators Mar 28, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants