Skip to content

feat(orchestrator): rewrite main.go to use pipeline.Construct - #440

Open
JamyDev wants to merge 1 commit into
jamy/orchestrator-pipelinefrom
jamy/orchestrator-rewrite
Open

feat(orchestrator): rewrite main.go to use pipeline.Construct#440
JamyDev wants to merge 1 commit into
jamy/orchestrator-pipelinefrom
jamy/orchestrator-rewrite

Conversation

@JamyDev

@JamyDev JamyDev commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Replace ~500 lines of manual wiring with a single pipeline.Construct call. The orchestrator's run() now:

  1. Builds per-queue profiles (Profile/Profiles in profiles.go)
  2. Populates orchestrator.Deps with profile-derived Factory adapters
  3. Calls pipeline.Construct(deps, orchestrator.Stages, ...) to get a single lifecycle.Component
  4. Drives Start/Stop on that component

Removed:

  • newTopicRegistry (topology now declared in orchestrator.Stages)
  • queueExtensions/queueRegistry (replaced by Profile/Profiles)
  • Three *Factory adapter structs (replaced by func-type adapters)
  • registerPrimaryControllers (stages declare their own New funcs)
  • registerDLQControllers (stages declare their own DLQ funcs)

The host retains: infrastructure bootstrap, per-queue profile construction, change provider wiring, gRPC server lifecycle, and signal handling — all host-specific concerns per the RFC.

Test Plan

Boot service with main.go and test against simulator

Issue

https://linear.app/uber/issue/CODEM-209/example-figure-out-a-better-structure-for-wiring-up

Stack

@JamyDev
JamyDev force-pushed the jamy/orchestrator-rewrite branch from 9a5c1f6 to e2a3dbc Compare July 29, 2026 17:48
@JamyDev
JamyDev force-pushed the jamy/orchestrator-rewrite branch from e2a3dbc to cc413f8 Compare July 30, 2026 05:44
@JamyDev
JamyDev added this pull request to the merge queue Jul 30, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue because the pull requests in the stack were not ordered correctly in the queue Jul 30, 2026
Replace ~500 lines of manual wiring with a single pipeline.Construct
call. The orchestrator's run() now:

1. Builds per-queue profiles (Profile/Profiles in profiles.go)
2. Populates orchestrator.Deps with profile-derived Factory adapters
3. Calls pipeline.Construct(deps, orchestrator.Stages, ...) to get a
   single lifecycle.Component
4. Drives Start/Stop on that component

Removed:
- newTopicRegistry (topology now declared in orchestrator.Stages)
- queueExtensions/queueRegistry (replaced by Profile/Profiles)
- Three *Factory adapter structs (replaced by func-type adapters)
- registerPrimaryControllers (stages declare their own New funcs)
- registerDLQControllers (stages declare their own DLQ funcs)

The host retains: infrastructure bootstrap, per-queue profile
construction, change provider wiring, gRPC server lifecycle, and
signal handling — all host-specific concerns per the RFC.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@JamyDev
JamyDev force-pushed the jamy/orchestrator-rewrite branch from cc413f8 to f4d66b3 Compare July 30, 2026 06:06
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.

2 participants