Skip to content

fix(bdd): route multi-cluster HTTP callbacks through the service alias - #2259

Merged
sbaum1994 merged 1 commit into
NVIDIA:mainfrom
sbaum1994:sbaum1994/fix/bdd-http-callback-2245
Oct 6, 2026
Merged

sbaum1994 merged 1 commit into
NVIDIA:mainfrom
sbaum1994:sbaum1994/fix/bdd-http-callback-2245

Conversation

@sbaum1994

@sbaum1994 sbaum1994 commented Oct 4, 2026 •

Copy link
Copy Markdown
Collaborator

TL;DR

Fix HTTP 504 responses in the multi-cluster Helmfile BDD by setting global.workerEndpoints.invocationServiceURL to the existing compute-reachable service alias. Workers can return responses to the control-plane invocation service after processing a request.

Additional Details

The fixture omitted the HTTP callback override while configuring gRPC and LLM callbacks. The stack therefore advertised a pod-specific address that the compute cluster could not resolve.

Set the supported override to http://invocation.nvcf.svc.cluster.local:8080. Document that shared callback routing requires one invocation-service replica because pending requests are held in that replica's memory.

Add a regression test that parses the real fixture, correct the defaults test that incorrectly prohibited this override for multi-cluster runs, and assert that Helmfile environment preparation retains it. The single-cluster fixture continues to use its stack default.

For the Reviewer

The change is limited to the multi-cluster BDD fixture and its tests. It uses existing alias Services and stack wiring; no runtime API, deployment topology, or dependency changes are required.

Customer release notes: Local multi-cluster Helmfile BDD HTTP invocations can return responses successfully.

For QA

  • Full live multi-cluster Helmfile BDD passed: 10 scenarios, 93 steps, 27m16s. Ran go test -run '^TestMultiClusterHelmfile$' -timeout 90m -v from tests/bdd on fresh local control-plane and compute clusters, starting from a7a5b08372df53cfc6bc47598275a2095106d94a plus this fix.
  • Temporary QA substitutions changed only cluster names, host ports, environment names, and config/state paths. All scenario assertions remained intact, and the tested callback fixture matched this patch exactly.
  • Passed initialization, migrations, compute registration, container and Helm tasks, resource-limit rejection checks, HTTP container and Helm-function invocation, gRPC invocation, LLM invocation, and unauthenticated LLM request rejection.
  • Verified the installed callback URL and one invocation-service replica. The harness restored generated environment/secrets files and isolated CLI state after the run.
  • The new regression failed before the fixture fix. Focused regression, defaults, and Helmfile wiring tests passed afterward.
  • Helmfile values rendering, golangci-lint run --config .golangci.yml ./..., and git diff --check passed.
  • go test -short ./... has one existing failing case: TestRemoteGatewayExamplesConfigureAWSNLBOnEnvoyService/gateway_routing_guide still reads the moved docs/user/gateway-routing.md. All other non-skipped cases passed. The unchanged gateway test also reproduces the failure when run alone.

QA needed: No additional manual QA for this fixture change; the full requested live suite passed.

Issues

Closes #2245

Discovered during validation of #2232.

Dependencies

None. No dependency or license changes; NOTICE is unchanged.

Checklist

  • I am familiar with the Contributing Guidelines.
  • I have signed off my commits for Developer Certificate of Origin (DCO) compliance.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

Summary by CodeRabbit

  • Bug Fixes
    • Corrected worker callback routing in the self-managed multi-cluster setup so callbacks use the compute cluster’s invocation service.
    • Updated multi-cluster configuration checks to verify the callback endpoint.

Set the compute-reachable invocation URL in the multi-cluster Helmfile
fixture so workers can return responses across clusters. Add a parsed
fixture regression, permit the required override in the defaults test,
and verify it survives environment preparation.

Fixes NVIDIA#2245

Signed-off-by: Stephanie Baum <sbaum@nvidia.com>
@sbaum1994
sbaum1994 requested a review from a team as a code owner October 4, 2026 05:57
@sbaum1994
sbaum1994 requested a review from gsharma-nv October 4, 2026 05:57
@coderabbitai

coderabbitai Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

🧰 Additional context used
📚 Code guidelines (1)
tests/bdd/AGENTS.md — auto-discovered

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/nvcf/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: dd91a771-dec8-419b-b7d3-788ad4c9fb80
📥 Commits

Reviewing files that changed from the base of the PR and between 0b5dbb8 and 0327256.

📒 Files selected for processing (3)
  • tests/bdd/fixtures/self-managed-local-bdd-multi.yaml
  • tests/bdd/fixtures_test.go
  • tests/bdd/godog_test.go

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 11 remain after this review.


📝 Walkthrough

Walkthrough

The multi-cluster BDD fixture now sets global.workerEndpoints.invocationServiceURL to the compute-cluster alias Service URL. Fixture and Helmfile wiring tests assert the value, and the defaults check permits the override for multi-cluster fixtures.

Changes

Multi-cluster callback configuration

Layer / File(s) Summary
Configure and validate the invocation callback
tests/bdd/fixtures/self-managed-local-bdd-multi.yaml, tests/bdd/fixtures_test.go, tests/bdd/godog_test.go
The multi-cluster fixture sets the HTTP invocation callback URL. Fixture tests assert the value and allow the override for multi-cluster fixtures; the Helmfile wiring test checks the configured URL.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Medium

Merge Risk: 🔵 Low · up to 03272

The multi-cluster callback can fail if an invocation-service rollout overlaps a pending request. This is a bounded rollout-time risk in the BDD fixture; the reported normal test path does not perform such an upgrade.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 2 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title follows Conventional Commits with the required scope for fix and accurately describes the multi-cluster callback-routing correction in the BDD fixture.
Linked Issues check ✅ Passed #2245 requires a compute-reachable HTTP callback in the multi-cluster fixture, a focused regression check, an explicit single-replica limitation, and a full multi-cluster BDD run. The fixture sets `gl…
Out of Scope Changes check ✅ Passed All changed files support #2245. The YAML change configures the callback. The fixture and Helmfile wiring tests cover the override. The defaults-test adjustment permits this required multi-cluster con…
Full details: Docstring Coverage

Explanation

Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 2 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@sbaum1994
sbaum1994 merged commit 2f83145 into NVIDIA:main Oct 6, 2026
22 checks passed
@balajinvda

Copy link
Copy Markdown
Contributor

This PR is included in version 1.29.4.

The release is available on GitHub release.

@balajinvda

Copy link
Copy Markdown
Contributor

This PR is included in version 1.69.1.

The release is available on GitHub release.

@balajinvda

Copy link
Copy Markdown
Contributor

This PR is included in version 1.25.1.

The release is available on GitHub release.

@balajinvda

Copy link
Copy Markdown
Contributor

This PR is included in version 1.14.2.

The release is available on GitHub release.

@balajinvda

Copy link
Copy Markdown
Contributor

This PR is included in version 1.10.1.

The release is available on GitHub release.

@balajinvda

Copy link
Copy Markdown
Contributor

This PR is included in version 0.5.1.

The release is available on GitHub release.

@balajinvda

Copy link
Copy Markdown
Contributor

This PR is included in version 0.9.1.

The release is available on GitHub release.

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.

fix(bdd): configure a compute-reachable HTTP invocation callback in the multi-cluster fixture

2 participants