Skip to content

fix(workers): persist WDV compute-config edits via update mask; revert $LATEST validation#3658

Merged
rossnelson merged 3 commits into
mainfrom
com-211-persistence
Jul 13, 2026
Merged

fix(workers): persist WDV compute-config edits via update mask; revert $LATEST validation#3658
rossnelson merged 3 commits into
mainfrom
com-211-persistence

Conversation

@rossnelson

@rossnelson rossnelson commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

Description

Part of COM-211. This does two things:

  1. Fixes the "Lambda ARN / field edits are not persisted" bug (the main issue).
  2. Reverts the $LATEST ARN validation added in fix(workers): reject $LATEST qualifier in Lambda ARN validation #3657, which was based on the ticket's original (incorrect) premise.

Root cause of the persistence bug

Editing an existing worker deployment version silently no-ops. The update-compute-config (and validate-compute-config) calls sent each scaling group as { scalingGroup } with no updateMask. Per temporal/api/compute/v1/config.proto, ComputeConfigScalingGroupUpdate.update_mask semantics are:

  • Mask is ignored for new scaling groups.
  • Empty mask for an existing scaling group is a no-op: no change.
  • Non-empty mask updates only the listed fields.

On edit the default scaling group already exists, so the empty mask means the backend applies nothing and returns success. This is why create works but edit does not, and why no error is shown. The temporal CLI does this correctly, sending UpdateMask{ Paths: ["provider.details"] }.

Fix

toScalingGroupsPayload now attaches updateMask: 'provider,scaler' to each scaling group. We use the broader provider,scaler (rather than the CLI's provider.details) because the UI edit form can also change the provider type (Lambda ↔ Cloud Run) and the scaler settings, so the full rebuilt group needs to apply. Create is unaffected (it uses a separate request path where the mask is ignored anyway).

Revert of $LATEST validation

#3657 rejected a :$LATEST qualifier in the Lambda ARN. That was based on the ticket's original framing; the real bug was persistence, and rejecting $LATEST is not correct, so this reverts that change (and its test).

Testing

  • pnpm test (all suites pass; update/validate body assertions cover the mask)
  • pnpm check (0 errors)
  • pnpm lint (0 errors)

@rossnelson rossnelson requested a review from a team as a code owner July 10, 2026 18:56
@vercel

vercel Bot commented Jul 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
holocene Ready Ready Preview, Comment Jul 13, 2026 7:52pm

Request Review

Editing an existing worker deployment version silently did nothing:
the update/validate compute-config calls sent the scaling group without
a FieldMask, and per the API an empty mask on an existing scaling group
is a no-op. Mirror the CLI by sending an update mask (provider,scaler)
so ARN, IAM role, external ID, and scaler edits actually persist.

COM-211
@rossnelson rossnelson force-pushed the com-211-persistence branch from 1a0fb16 to 423d8e3 Compare July 10, 2026 19:01
@rossnelson rossnelson changed the title fix(workers): send update mask when editing WDV compute config fix(workers): persist WDV compute-config edits via update mask; revert $LATEST validation Jul 10, 2026
# Conflicts:
#	src/lib/components/workers/serverless-worker-form/shared.test.ts
@rossnelson rossnelson enabled auto-merge (squash) July 13, 2026 19:59
@rossnelson rossnelson merged commit 4470b76 into main Jul 13, 2026
17 checks passed
@rossnelson rossnelson deleted the com-211-persistence branch July 13, 2026 20:00
rossedfort added a commit that referenced this pull request Jul 13, 2026
Auto-generated version bump from 2.52.0 to 2.52.1

Bump type: patch

Changes included:
- [`3be0df00`](3be0df0) fix(schedules): default absent second/minute/hour to 0 when editing (#3653)
- [`508b65b7`](508b65b) fix(schedules): default emptied second/minute/hour to 0 on submit (#3655)
- [`1f0e149c`](1f0e149) fix(workers): reject $LATEST qualifier in Lambda ARN validation (#3657)
- [`b42b0776`](b42b077) a11y(2.4.3): inert-based focus containment + restore; drop trap from native dialogs (#3598)
- [`cc491a29`](cc491a2) a11y(2.4.3): keep toast live region announcing during a focus trap [DT-4252] (#3654)
- [`ddc7f8e2`](ddc7f8e) a11y(2.4.11): add scroll-padding so sticky overlays don't obscure focused elements (#3532)
- [`b7e3a472`](b7e3a47) FilterBar icon update (#3660)
- [`09318ec6`](09318ec) Add danger PR comment for api version bump (#3662)
- [`273cc4be`](273cc4b) a11y(4.1.2): add label prop to Button primitive and enforce accessible names (#3556)
- [`4507115f`](4507115) Use an editable combobox for the Cloud Run region field (DT-4232) (#3636)
- [`694a7471`](694a747) a11y(1.4.13): migrate saved-query nav tooltips to Tooltip primitive (#3607)
- [`8b384a40`](8b384a4) a11y(4.1.2): fix nested interactive elements in Copyable component (#3558)
- [`1bfd2750`](1bfd275) fix describe SANO API requests to include runId parameter (#3661)
- [`ba18b43e`](ba18b43) a11y(4.1.2): require label on CodeBlock primitive; add aria-readonly for read-only mode (#3557)
- [`6e2290f1`](6e2290f) feat(deployments): make compute provider picker configurable (#3659)
- [`4470b76a`](4470b76) fix(workers): persist WDV compute-config edits via update mask; revert $LATEST validation (#3658)
- [`17fd591b`](17fd591) fix(nexus-operations): make start standalone nexus operation timeouts optional (#3656)

Co-authored-by: rossedfort <11775628+rossedfort@users.noreply.github.com>
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