Skip to content

Remove incomplete reload/keyed reconciliation#73

Open
samuel-williams-shopify wants to merge 1 commit into
mainfrom
remove-reload
Open

Remove incomplete reload/keyed reconciliation#73
samuel-williams-shopify wants to merge 1 commit into
mainfrom
remove-reload

Conversation

@samuel-williams-shopify

Copy link
Copy Markdown
Contributor

Reload's in-place, key-based reconciliation was incomplete and not correctly wired, so rather than ship a partial fix we're removing it and will revisit with a simpler design (likely blue-green "adoption": build the new container reusing unchanged processes, stop the rest).

Why

  • Controller#reload was orphaned — nothing operational called it (not signal-wired anywhere; SIGHUP → restart), only the tests.
  • The container-level reconcile-remove path was broken (Keyed#stop? called @value.stop, which children don't implement → NoMethodError) and would also have respawned restart: true children.
  • Mixing keyed and non-keyed spawns accumulated duplicates on each reload.
  • Falcon's Virtual#setup uses the keyed API but never actually exercises reconciliation (its SIGHUP → restart rebuilds a fresh container each time), so nothing relies on the working behavior.

Changes

  • Remove Controller#reload.
  • Remove Async::Container::Keyed and the container-level reconcile (mark/clear/sweep, stopping obsolete keyed children).
  • Generic#reload now simply re-runs the given block; existing keyed children are still reused via spawn(key:), so re-running setup does not duplicate them.
  • Retain the primitives Falcon depends on: spawn(key:) registration and container[key] lookup ([] now returns the child directly).
  • Remove the Controller#reload tests.

Not broken

Falcon only needs spawn(key:), container[key], and container.reload { ... } (which still yields) — all retained. Full suite (191) green.

Supersedes #72 (which fixed the reconcile-remove bug); closing that in favour of this removal.

Assisted-By: devx/904563b8-dbee-48b0-9726-f036df3ed96d
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