PR J: Redis-backed Event Bus broker (feature-flagged) #14

Open
nsatoshi wants to merge 1 commits from devin/1776881249-pr-j-redis-event-bus into main
Owner

Closes gap-analysis v2 §7.3 + §10.3.

What

  • New orchestrator/src/services/eventBusBroker.ts: per-process singleton bridging the in-process EventEmitter across replicas over Redis pub/sub.
  • eventBus.publish() hands every persisted record to the broker after the local emit; remote replicas re-emit inbound records on their own local emitter.
  • Echo suppression via per-process instanceId in the envelope.
  • Feature-flagged by REDIS_URL. When unset the broker is strictly inert — single-process behaviour is preserved byte-for-byte.
  • 3 unit tests for feature-flag semantics (REDIS_URL unset path). Live Redis behaviour will be covered by the Testcontainers suite in PR Q.

Why

Gap-analysis v2 §7.3 flagged the event bus as process-local: when the orchestrator scales to >1 replicas, SSE subscribers connected to replica A never see events originated on replica B. This PR closes that gap without changing the signature chain or persistence layer.

Verification

  • npx tsc --noEmit clean.
  • npx jest 83/83 green.
Closes gap-analysis v2 §7.3 + §10.3. ## What - New `orchestrator/src/services/eventBusBroker.ts`: per-process singleton bridging the in-process `EventEmitter` across replicas over Redis pub/sub. - `eventBus.publish()` hands every persisted record to the broker after the local emit; remote replicas re-emit inbound records on their own local emitter. - Echo suppression via per-process `instanceId` in the envelope. - Feature-flagged by `REDIS_URL`. When unset the broker is strictly inert — single-process behaviour is preserved byte-for-byte. - 3 unit tests for feature-flag semantics (`REDIS_URL` unset path). Live Redis behaviour will be covered by the Testcontainers suite in PR Q. ## Why Gap-analysis v2 §7.3 flagged the event bus as process-local: when the orchestrator scales to >1 replicas, SSE subscribers connected to replica A never see events originated on replica B. This PR closes that gap without changing the signature chain or persistence layer. ## Verification - `npx tsc --noEmit` clean. - `npx jest` 83/83 green.
nsatoshi added 1 commit 2026-04-22 18:09:22 +00:00
Redis-backed Event Bus broker (feature-flagged via REDIS_URL)
Some checks failed
CI / Frontend Lint (pull_request) Failing after 7s
CI / Frontend Type Check (pull_request) Failing after 6s
CI / Frontend Build (pull_request) Failing after 7s
CI / Frontend E2E Tests (pull_request) Failing after 8s
CI / Orchestrator Build (pull_request) Failing after 6s
CI / Contracts Compile (pull_request) Failing after 7s
CI / Contracts Test (pull_request) Failing after 6s
Code Quality / SonarQube Analysis (pull_request) Failing after 19s
Code Quality / Code Quality Checks (pull_request) Failing after 4s
Security Scan / Dependency Vulnerability Scan (pull_request) Failing after 5s
Security Scan / OWASP ZAP Scan (pull_request) Failing after 3s
bf12f94250
Closes gap-analysis v2 §7.3 and §10.3.

- New services/eventBusBroker.ts: per-process singleton with unique
  instanceId; subscribes to a Redis pub/sub channel (default
  ccombo:events) and re-emits inbound records on the in-process
  EventEmitter. Outbound envelopes carry the instanceId so the
  originating replica drops its own echo.
- eventBus.publish() hands every persisted record to the broker after
  the local emit, so same-process SSE subscribers see zero change
  while remote-replica subscribers now receive every event.
- When REDIS_URL is unset the broker is strictly inert (no connect,
  no publish) — single-process behaviour is preserved byte-for-byte.
- 3 unit tests for feature-flag semantics; full suite 83/83 green.
- Live Redis behaviour will be covered by the Testcontainers suite
  in PR Q.
Some checks failed
CI / Frontend Lint (pull_request) Failing after 7s
CI / Frontend Type Check (pull_request) Failing after 6s
CI / Frontend Build (pull_request) Failing after 7s
CI / Frontend E2E Tests (pull_request) Failing after 8s
CI / Orchestrator Build (pull_request) Failing after 6s
CI / Contracts Compile (pull_request) Failing after 7s
CI / Contracts Test (pull_request) Failing after 6s
Code Quality / SonarQube Analysis (pull_request) Failing after 19s
Code Quality / Code Quality Checks (pull_request) Failing after 4s
Security Scan / Dependency Vulnerability Scan (pull_request) Failing after 5s
Security Scan / OWASP ZAP Scan (pull_request) Failing after 3s
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin devin/1776881249-pr-j-redis-event-bus:devin/1776881249-pr-j-redis-event-bus
git checkout devin/1776881249-pr-j-redis-event-bus
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: d-bis/CurrenciCombo#14