Skip to content

Register Falcon cluster endpoints with Envoy - #1

Merged
samuel-williams-shopify merged 9 commits into
mainfrom
cluster-listener-registration
Jul 24, 2026
Merged

Register Falcon cluster endpoints with Envoy#1
samuel-williams-shopify merged 9 commits into
mainfrom
cluster-listener-registration

Conversation

@samuel-williams-shopify

@samuel-williams-shopify samuel-williams-shopify commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a supervised Falcon cluster adapter using prepare_worker!(instance, listener:).
  • Convert Falcon listeners into Envoy-specific endpoint / endpoints supervisor state.
  • Preserve the endpoint scheme and supported wire-protocol names in supervisor state.
  • Intersect worker protocol capabilities per cluster and select the preferred common Envoy upstream mode.
  • Publish grouped IP and Unix-domain-socket addresses through EDS.
  • Add a two-worker Falcon Unix-socket example.

Falcon retains its server-side Listener terminology. At the integration boundary, supervisor-envoy converts that value into an upstream Envoy Endpoint, avoiding confusion with Envoy LDS listeners. Protocol implementation objects do not cross the supervisor-state boundary.

Released dependencies

  • async-http v0.97.0
  • async-service-supervisor v0.18.0

Pending dependencies

Testing

  • RUBYLIB=../async-grpc-xds/lib bundle exec bake test (21 tests, 35 assertions)
  • bundle exec rubocop
  • bundle exec bake decode:index:coverage lib (26/26 definitions)

@samuel-williams-shopify

Copy link
Copy Markdown
Contributor Author

Local cross-repository validation completed with the Falcon, supervisor, xDS, and supervisor-envoy branches wired through RUBYLIB:

  • Started examples/falcon/falcon.rb with two real cluster workers.
  • Confirmed both generated Unix sockets accepted HTTP requests.
  • Connected an ADS client to the supervisor xDS server.
  • Confirmed EDS contained two LbEndpoint resources whose primary addresses were the exact worker pipe.path values.

I also attempted the final request through a real Envoy container. The local Colima/containerd runtime is currently unhealthy: multiple pre-existing and new container tasks are stuck in UNKNOWN, and Docker cannot start or remove containers without hanging. I did not restart the user-wide VM. The Ruby-side listener -> endpoint state -> EDS pipe path chain is confirmed; the final Envoy proxy hop should be rerun after Colima is repaired.

Merge/release sequencing matters for standalone CI: this PR needs socketry/async-service-supervisor#7 and socketry/async-grpc-xds#1 (and the current xDS control-plane API) available before its normal bundle can load the new APIs.

@samuel-williams-shopify
samuel-williams-shopify merged commit 4cee06b into main Jul 24, 2026
44 of 46 checks passed
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