Skip to content

fix(operator): replace snapshot pods after GMS restart - #11286

Merged
galletas1712 merged 2 commits into
mainfrom
fix/operator-enable-gms-snapshot
Aug 5, 2026
Merged

fix(operator): replace snapshot pods after GMS restart#11286
galletas1712 merged 2 commits into
mainfrom
fix/operator-enable-gms-snapshot

Conversation

@galletas1712

@galletas1712 galletas1712 commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • preserve Grove failover cascade as a focused private failoverCascadeReconciler, independently registered under the Grove gate
  • add a private gmsPodReplacementReconciler that UID-safely replaces an owned Snapshot restore-target Pod after its native gms-server sidecar restarts
  • make the policies fail-closed and scheduling-independent: Snapshot restore targets are excluded from InterPod failover cascade in both the predicate and reconcile path
  • retain only the native gms-server identity, restart policy, and restart count required by replacement detection in the shared Pod cache

Both controllers use For(Pod) with separate queues and predicates. Existing feature gates remain unchanged. This is the first Pod-safety change in #12671; ordinary Snapshot + GMS enablement and Snapshot + failover restore coordination remain follow-up changes.

Validation

  • focused GMS Pod replacement, Grove failover cascade, overlap-safety, and Pod-cache contract tests under the race detector
  • full internal/podcache and internal/dynamo tests; controller and cmd package compilation
  • go vet ./cmd ./internal/controller ./internal/dynamo ./internal/podcache
  • repository-pinned make lint
  • pinned make manifests with no RBAC, CRD, webhook, or Helm drift
  • gofmt and git diff --check

The Kubernetes envtest suite was not run locally because its etcd test binary is unavailable; the controller package compiles and all focused controller coverage passes.

Summary by CodeRabbit

  • New Features

    • Added automatic replacement of eligible pods after the native GMS sidecar restarts, when the snapshot feature is enabled.
    • Pod replacement uses safeguards to prevent deleting an unintended pod.
  • Bug Fixes

    • Snapshot restore-target pods are no longer incorrectly removed during failover handling.
    • Improved pod status tracking for GMS sidecar restarts, including restart counts and termination state.
  • Tests

    • Expanded coverage for pod replacement, failover exclusions, error handling, and safe deletion behavior.

@galletas1712
galletas1712 requested review from a team as code owners July 6, 2026 22:31
@github-actions github-actions Bot added fix documentation Improvements or additions to documentation deployment::k8s Relates to dynamo deployment in kubernetes labels Jul 6, 2026
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

@datadog-official

datadog-official Bot commented Jul 6, 2026

Copy link
Copy Markdown

Pipelines

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: c7ae994 | Docs | Datadog PR Page | Give us feedback!

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

The change adds a feature-gated GMS pod replacement controller. It detects native GMS sidecar restarts and deletes owned snapshot restore-target pods. Failover cascade handling excludes those pods. Pod cache projections preserve the restart data required for detection, with expanded controller and contract tests.

Changes

GMS snapshot pod lifecycle

Layer / File(s) Summary
Preserve GMS restart state
deploy/operator/internal/podcache/transform.go, deploy/operator/internal/podcache/transform_test.go
The pod cache retains the native GMS init-sidecar identity, restart policy, restart count, and reduced status fields. Tests cover projection behavior.
Exclude restore targets from failover
deploy/operator/internal/controller/failover_cascade_controller.go, deploy/operator/internal/controller/failover_cascade_controller_test.go, deploy/operator/internal/dynamo/failover.go, deploy/operator/internal/dynamo/failover_test.go
Failover predicates and reconciliation reject snapshot restore-target pods. The reconciler is internalized and uses predicate-based registration. Tests verify deletion selectors, namespace isolation, and restore-target handling.
Replace restarted GMS restore targets
deploy/operator/internal/controller/gms_pod_replacement_controller.go
A new controller detects eligible native GMS sidecar restarts and deletes owned restore-target pods with a UID precondition.
Validate replacement behavior
deploy/operator/internal/controller/gms_pod_replacement_controller_test.go, deploy/operator/internal/controller/pod_cache_contract_test.go
Tests cover event predicates, reconciliation, UID-safe deletion, errors, missing resources, and restore-target fixtures.
Register the feature-gated controller
deploy/operator/internal/controller/setup.go, deploy/operator/cmd/main.go
Setup registers the GMS pod replacement controller. Main registration runs it only when the GMSSnapshot feature gate is enabled.

Estimated code review effort: 3 (Moderate) | ~25 minutes

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description explains the changes and validation, but it omits the required Related Issues section and reviewer-start guidance. Add the required Related Issues section with an issue link or confirmation that no related issue exists, and identify files for reviewer focus.
Docstring Coverage ⚠️ Warning Docstring coverage is 6.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the primary change: replacing Snapshot Pods after a GMS restart.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.12.2)

level=error msg="[linters_context] typechecking error: pattern ./...: directory prefix . does not contain main module or its selected dependencies"


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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
deploy/operator/internal/dynamo/v1beta1_helpers.go (1)

10-21: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Export the message constant to avoid drift with the webhook wording.

The same literal "checkpoint/snapshot is not supported with active/passive failover" is hard-coded again in shared_v1beta1.go (Line 218) instead of referencing this constant. Since checkpointFailoverUnsupportedMessage is unexported, the webhook package can't reuse it, so the controller-side and admission-side error text can silently diverge if one is edited later (multiple tests already assert on the exact string in both places).

♻️ Suggested fix
-const checkpointFailoverUnsupportedMessage = "checkpoint/snapshot is not supported with active/passive failover"
+// CheckpointFailoverUnsupportedMessage is shared between reconcile-time
+// validation and webhook admission so the two enforcement points stay
+// worded identically.
+const CheckpointFailoverUnsupportedMessage = "checkpoint/snapshot is not supported with active/passive failover"

Then use dynamo.CheckpointFailoverUnsupportedMessage in shared_v1beta1.go's field.Forbidden(...) call, and errors.New(CheckpointFailoverUnsupportedMessage) here.

Also applies to: 187-197

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@deploy/operator/internal/dynamo/v1beta1_helpers.go` around lines 10 - 21, The
failover validation message is duplicated as a literal and can drift between
controller and webhook paths; export the shared constant from the helper package
and reuse it everywhere. Update the identifier currently named
checkpointFailoverUnsupportedMessage in the v1beta1 helpers so the webhook-side
code in shared_v1beta1.go can reference the same symbol, and replace the
hard-coded string in the forbidden/error construction with that shared constant
to keep both paths and their tests aligned.
deploy/operator/internal/webhook/validation/shared_v1alpha1.go (1)

439-447: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Hoist the failover message into a shared exported helper

This literal duplicates the same failover text already defined in deploy/operator/internal/dynamo/v1beta1_helpers.go, and the v1beta1 webhook path hardcodes it too. Since checkpointFailoverUnsupportedMessage is unexported, this validator can’t reuse it directly; move the text behind a shared exported const/helper so both paths stay in sync.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@deploy/operator/internal/webhook/validation/shared_v1alpha1.go` around lines
439 - 447, Hoist the failover error text into a shared exported constant/helper
so both validators reuse the same source of truth. Update
SharedSpecValidatorV1Alpha1.validateCheckpointWithFailover to reference that
shared symbol instead of embedding the literal, and make the existing
checkpointFailoverUnsupportedMessage in the Dynamo helpers accessible from both
the v1alpha1 and v1beta1 webhook paths to keep the messages in sync.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@deploy/operator/internal/dynamo/v1beta1_helpers.go`:
- Around line 10-21: The failover validation message is duplicated as a literal
and can drift between controller and webhook paths; export the shared constant
from the helper package and reuse it everywhere. Update the identifier currently
named checkpointFailoverUnsupportedMessage in the v1beta1 helpers so the
webhook-side code in shared_v1beta1.go can reference the same symbol, and
replace the hard-coded string in the forbidden/error construction with that
shared constant to keep both paths and their tests aligned.

In `@deploy/operator/internal/webhook/validation/shared_v1alpha1.go`:
- Around line 439-447: Hoist the failover error text into a shared exported
constant/helper so both validators reuse the same source of truth. Update
SharedSpecValidatorV1Alpha1.validateCheckpointWithFailover to reference that
shared symbol instead of embedding the literal, and make the existing
checkpointFailoverUnsupportedMessage in the Dynamo helpers accessible from both
the v1alpha1 and v1beta1 webhook paths to keep the messages in sync.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 09854cca-0bc5-4893-a9ea-3351cf664637

📥 Commits

Reviewing files that changed from the base of the PR and between 21043cd and 6e88396.

📒 Files selected for processing (24)
  • deploy/helm/charts/platform/components/operator/templates/deployment.yaml
  • deploy/helm/charts/platform/components/operator/values.yaml
  • deploy/operator/cmd/main.go
  • deploy/operator/config/samples/nvidia.com_v1alpha1_dynamocheckpoint.yaml
  • deploy/operator/internal/checkpoint/checkpoint_test.go
  • deploy/operator/internal/checkpoint/gms_snapshot_gate.go
  • deploy/operator/internal/checkpoint/resolve.go
  • deploy/operator/internal/checkpoint/resource.go
  • deploy/operator/internal/consts/consts.go
  • deploy/operator/internal/controller/dynamocheckpoint_controller.go
  • deploy/operator/internal/controller/dynamocheckpoint_controller_test.go
  • deploy/operator/internal/controller/dynamocomponentdeployment_controller.go
  • deploy/operator/internal/controller/dynamocomponentdeployment_controller_test.go
  • deploy/operator/internal/controller/dynamographdeployment_controller.go
  • deploy/operator/internal/controller/dynamographdeployment_controller_test.go
  • deploy/operator/internal/dynamo/v1beta1_helpers.go
  • deploy/operator/internal/webhook/validation/dynamocheckpoint_handler.go
  • deploy/operator/internal/webhook/validation/dynamocheckpoint_handler_test.go
  • deploy/operator/internal/webhook/validation/dynamocomponentdeployment_test.go
  • deploy/operator/internal/webhook/validation/dynamographdeployment_test.go
  • deploy/operator/internal/webhook/validation/shared_v1alpha1.go
  • deploy/operator/internal/webhook/validation/shared_v1beta1.go
  • docs/kubernetes/shadow-engine-failover.md
  • docs/kubernetes/snapshot.md
💤 Files with no reviewable changes (12)
  • deploy/operator/internal/consts/consts.go
  • deploy/operator/cmd/main.go
  • deploy/operator/internal/controller/dynamocheckpoint_controller.go
  • deploy/helm/charts/platform/components/operator/templates/deployment.yaml
  • deploy/operator/internal/webhook/validation/dynamocheckpoint_handler_test.go
  • deploy/operator/internal/checkpoint/gms_snapshot_gate.go
  • deploy/helm/charts/platform/components/operator/values.yaml
  • deploy/operator/config/samples/nvidia.com_v1alpha1_dynamocheckpoint.yaml
  • deploy/operator/internal/controller/dynamocheckpoint_controller_test.go
  • deploy/operator/internal/webhook/validation/dynamocheckpoint_handler.go
  • deploy/operator/internal/checkpoint/resource.go
  • deploy/operator/internal/checkpoint/resolve.go

@galletas1712
galletas1712 force-pushed the fix/operator-enable-gms-snapshot branch from d62389a to 70d708f Compare July 7, 2026 22:50
@galletas1712
galletas1712 force-pushed the fix/operator-enable-gms-snapshot branch from 70d708f to 55c319f Compare July 24, 2026 23:12
@galletas1712
galletas1712 requested review from a team as code owners July 24, 2026 23:12
@galletas1712
galletas1712 force-pushed the fix/operator-enable-gms-snapshot branch from 55c319f to 6aa21f0 Compare July 24, 2026 23:34
Comment thread deploy/operator/internal/webhook/validation/shared_v1beta1.go Outdated
@galletas1712
galletas1712 force-pushed the fix/operator-enable-gms-snapshot branch from 6aa21f0 to 963608d Compare July 27, 2026 18:12
@galletas1712
galletas1712 force-pushed the fix/operator-enable-gms-snapshot branch from 963608d to 9bff205 Compare August 5, 2026 00:05
@pull-request-size pull-request-size Bot added size/L and removed size/XL labels Aug 5, 2026
@galletas1712 galletas1712 added operator CODEOWNER area -> @ai-dynamo/dynamo-operator-codeowners GMS labels Aug 5, 2026
@galletas1712 galletas1712 changed the title fix(operator): enable GMS snapshot by default fix(operator): replace snapshot pods after GMS restart Aug 5, 2026
@galletas1712 galletas1712 removed the documentation Improvements or additions to documentation label Aug 5, 2026
@galletas1712 galletas1712 added the fault-tolerance CODEOWNER area -> @ai-dynamo/dynamo-fault-tolerance-codeowners label Aug 5, 2026
@galletas1712
galletas1712 force-pushed the fix/operator-enable-gms-snapshot branch from 9bff205 to f790fc9 Compare August 5, 2026 00:51
@pull-request-size pull-request-size Bot added size/XL and removed size/L labels Aug 5, 2026
@galletas1712
galletas1712 force-pushed the fix/operator-enable-gms-snapshot branch from f790fc9 to cdfde13 Compare August 5, 2026 02:06
Signed-off-by: Schwinn Saereesitthipitak <schwinns@nvidia.com>
@galletas1712
galletas1712 force-pushed the fix/operator-enable-gms-snapshot branch from cdfde13 to c922a42 Compare August 5, 2026 16:54
@copy-pr-bot

copy-pr-bot Bot commented Aug 5, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@julienmancuso

Copy link
Copy Markdown
Contributor

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
deploy/operator/internal/controller/gms_pod_replacement_controller.go (1)

38-119: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add one-line story comments above the new multi-line semantic blocks.

  • deploy/operator/internal/controller/gms_pod_replacement_controller.go#L38-L119: add focused story comments for reconciliation, native-sidecar detection, and event filtering.
  • deploy/operator/internal/podcache/transform.go#L110-L121: add a story comment for GMS init-container selection.
  • deploy/operator/internal/podcache/transform.go#L204-L211: add a story comment for retaining the GMS restart count.
  • deploy/operator/internal/controller/setup.go#L172-L191: add story comments for controller construction and registration.
  • deploy/operator/cmd/main.go#L640-L650: add a story comment for GMSSnapshot-gated registration.

As per coding guidelines, “In Go code, put a one-line story comment above every multi-line block of logically connected code.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@deploy/operator/internal/controller/gms_pod_replacement_controller.go` around
lines 38 - 119, add one-line story comments above the requested multi-line
logical blocks: Reconcile, hasRestartedNativeGMSServer, and
gmsPodReplacementPredicate in
deploy/operator/internal/controller/gms_pod_replacement_controller.go; the GMS
init-container selection and restart-count retention blocks in
deploy/operator/internal/podcache/transform.go; controller construction and
registration in deploy/operator/internal/controller/setup.go; and
GMSSnapshot-gated registration in deploy/operator/cmd/main.go. Keep comments
focused on each block’s behavior and do not alter the implementation.

Source: Coding guidelines

deploy/operator/internal/controller/gms_pod_replacement_controller_test.go (2)

33-260: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add t.Log headings before each test step.

  • deploy/operator/internal/controller/gms_pod_replacement_controller_test.go#L33-L260: log each predicate, reconciliation, and error-path test step.
  • deploy/operator/internal/podcache/transform_test.go#L153-L183: log each added projection-contract test step.
  • deploy/operator/internal/controller/pod_cache_contract_test.go#L96-L150: log the topology, failover, replacement, snapshot, model, diagnostics, and Recreate test steps.

As per coding guidelines, “use t.Log to explain the test's story, with one heading before each block implementing a test step.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@deploy/operator/internal/controller/gms_pod_replacement_controller_test.go`
around lines 33 - 260, Add t.Log headings before each test-step block in
deploy/operator/internal/controller/gms_pod_replacement_controller_test.go
(lines 33-260), covering predicate, reconciliation, and error-path cases;
deploy/operator/internal/podcache/transform_test.go (lines 153-183), covering
each projection-contract case; and
deploy/operator/internal/controller/pod_cache_contract_test.go (lines 96-150),
covering topology, failover, replacement, snapshot, model, diagnostics, and
Recreate steps. Use concise headings that explain each test’s story.

Source: Coding guidelines


53-73: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Replace bespoke mutation closures with explicit table data.

The tests map hides each test mutation in a closure. Keep the mutation inputs in the table and apply them explicitly in the test body.

As per coding guidelines, “avoid hiding bespoke test logic in closures.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@deploy/operator/internal/controller/gms_pod_replacement_controller_test.go`
around lines 53 - 73, Replace the closure-valued tests map in the
gmsPodReplacement test with table entries containing explicit mutation data for
each case, such as label removal, owner-reference value, init-container restart
policy, and restart count. In the t.Run body, apply those table fields directly
to the generated pod before asserting pred.Create returns false, preserving all
existing scenarios.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@deploy/operator/internal/controller/failover_cascade_controller.go`:
- Around line 66-71: Update the cascade delete selector used by the controller’s
DeleteAllOf call to require snapshotprotocol.RestoreTargetLabel is not true,
while preserving the existing failover and Grove label requirements. Add a
regression test covering a terminal non-restore Pod sharing a group with a
restore target, and verify the cascade deletes only the eligible Pod and leaves
the restore target intact.

---

Nitpick comments:
In `@deploy/operator/internal/controller/gms_pod_replacement_controller_test.go`:
- Around line 33-260: Add t.Log headings before each test-step block in
deploy/operator/internal/controller/gms_pod_replacement_controller_test.go
(lines 33-260), covering predicate, reconciliation, and error-path cases;
deploy/operator/internal/podcache/transform_test.go (lines 153-183), covering
each projection-contract case; and
deploy/operator/internal/controller/pod_cache_contract_test.go (lines 96-150),
covering topology, failover, replacement, snapshot, model, diagnostics, and
Recreate steps. Use concise headings that explain each test’s story.
- Around line 53-73: Replace the closure-valued tests map in the
gmsPodReplacement test with table entries containing explicit mutation data for
each case, such as label removal, owner-reference value, init-container restart
policy, and restart count. In the t.Run body, apply those table fields directly
to the generated pod before asserting pred.Create returns false, preserving all
existing scenarios.

In `@deploy/operator/internal/controller/gms_pod_replacement_controller.go`:
- Around line 38-119: add one-line story comments above the requested multi-line
logical blocks: Reconcile, hasRestartedNativeGMSServer, and
gmsPodReplacementPredicate in
deploy/operator/internal/controller/gms_pod_replacement_controller.go; the GMS
init-container selection and restart-count retention blocks in
deploy/operator/internal/podcache/transform.go; controller construction and
registration in deploy/operator/internal/controller/setup.go; and
GMSSnapshot-gated registration in deploy/operator/cmd/main.go. Keep comments
focused on each block’s behavior and do not alter the implementation.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 024582b8-3a64-4a5c-a974-5f729745c58c

📥 Commits

Reviewing files that changed from the base of the PR and between 5f34677 and c922a42.

📒 Files selected for processing (11)
  • deploy/operator/cmd/main.go
  • deploy/operator/internal/controller/failover_cascade_controller.go
  • deploy/operator/internal/controller/failover_cascade_controller_test.go
  • deploy/operator/internal/controller/gms_pod_replacement_controller.go
  • deploy/operator/internal/controller/gms_pod_replacement_controller_test.go
  • deploy/operator/internal/controller/pod_cache_contract_test.go
  • deploy/operator/internal/controller/setup.go
  • deploy/operator/internal/dynamo/failover.go
  • deploy/operator/internal/dynamo/failover_test.go
  • deploy/operator/internal/podcache/transform.go
  • deploy/operator/internal/podcache/transform_test.go

Comment thread deploy/operator/internal/controller/failover_cascade_controller.go
Signed-off-by: Schwinn Saereesitthipitak <schwinns@nvidia.com>
@galletas1712

Copy link
Copy Markdown
Contributor Author

/ok to test c7ae994

@galletas1712
galletas1712 merged commit c5c076a into main Aug 5, 2026
169 of 171 checks passed
@galletas1712
galletas1712 deleted the fix/operator-enable-gms-snapshot branch August 5, 2026 22:01
hhzhang16 added a commit that referenced this pull request Aug 6, 2026
dyn-3691-extract-shared-target-pid-cuda-customstorage-operation-layer

* 'main' of https://github.com/ai-dynamo/dynamo: (65 commits)
  fix(frontend): emit SGLang stream role once (#12741)
  docs(fern): promote v1.3.1 to current release (#12752)
  fix(docs): remove duplicate unscoped community-rail CSS rules (#12615)
  feat(operator): migrate CRD storage to v1beta1 (#11904)
  fix: synchronize self-benchmark capacity across DP ranks (#12021)
  chore(deps): bump dynamo-tokenizers to 1.8.0 (#12707)
  fix(frontend): preserve split UTF-8 characters (#12688)
  docs: align Kubernetes build selector with CLI (#12729)
  fix(frontend): preserve completion backend error status (#12706)
  fix(operator): replace snapshot pods after GMS restart (#11286)
  refactor(media): rename installer module, drop --packages per review
  fix(media): harden installer against three pre-redesign review findings
  fix(media): verify installs in a fresh interpreter; teach --pip-args= form
  test(serve): install test-time decoders at the validated bounds
  feat(media): explicit installer for additional media decoders
  docs(spica): correct kv_load_ratio support guidance (#12714)
  feat(operator): add experimental grove.forceScalingGroup for single-node components (#11772)
  fix(vllm): declare entry-stage engine_input_source in GLM-Image NIXL config (#12709)
  chore: bump trtllm to v1.3.0rc23 (#12532)
  perf: remove trtllm postprocessing workers from the args as post processing workers are not effective in dynamo (#12592)
  ...

Signed-off-by: Hannah Zhang <hannahz@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

deployment::k8s Relates to dynamo deployment in kubernetes fault-tolerance CODEOWNER area -> @ai-dynamo/dynamo-fault-tolerance-codeowners fix GMS operator CODEOWNER area -> @ai-dynamo/dynamo-operator-codeowners size/XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants