feat(deployments): show worker deployment connection status by default - #3852
feat(deployments): show worker deployment connection status by default#3852rossnelson wants to merge 3 commits into
Conversation
Change the default of showConnectionStatus to true on the deployments
list, the deployment detail page, and both table rows. This shows the
Connection column and the connection badge to every consumer of the
package, which includes cloud-ui.
Keep the prop. A consumer that must hide the column can still pass
showConnectionStatus={false} without a release of this package.
Two backend defects made the column show a permanent Pending status.
Both are corrected:
- temporalio/temporal-auto-scaled-workers#99 lets an empty ValidateSpec
request validate the current configuration and persist the result.
- temporalio/temporal#11273 sends syncSummary(), so an updated
ComputeStatus reaches the deployment workflow that
DescribeWorkerDeployment reads.
Cover the re-exposed path in the tests. The unit tests show the column
by default, keep the opt-out, and add a Pending version. The integration
test shows the persisted status, then changes the badge from Pending to
Connected to Failed across two validations.
Restore the Validate Connection guidance in the Pending tooltip. Commit e6efe42 removed this guidance because the on-demand validation was a dry run that did not write to compute_status. That is no longer correct. In temporalio/temporal-auto-scaled-workers#99, handleValidateSpec writes the validation status and signals the version workflow when the request carries no scaling group changes, which is what the manual Validate Connection action sends. Keep the 6h interval. The default of the dynamic configuration setting workercontroller.periodic_validation_interval_s is 21600 seconds.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Preview is blocked by an unrelated breaking change on mainThe first preview build failed, and the cause is not in this PR. Run: https://github.com/temporalio/cloud-ui/actions/runs/32403417274 (the pack On that PR, Vercel, These come from #3822, Evidence that this PR is not the cause: the last test PR before the refactor, To see the feature, a second preview builds the same two commits on the commit cloud-ui needs an update for #3822 before a preview of this branch as it stands |
Preview is live, built from a pre-refactor basePreview URL: https://cloud-ui-git-test-ui-54483a7f.preview.thundergun.io Vercel reports This preview carries the same two commits as this PR, applied to What the preview shows is the UI. It does not confirm the feature end to end. Still to check by hand, with a signed-in session:
|
…not finish Report an incomplete validation as unknown, not as an invalid connection. A 504 from the validate-compute-config endpoint made the modal say "Connection is invalid". The gateway timed out, so the check never returned a verdict. The connection can be correct. The backend reports a completed check that finds a problem as InvalidArgument, which maps to HTTP 400 and carries the message it also writes to provider_validation.error_message. Treat that status alone as a verdict. Report every other failure, which includes 5xx, a lost connection, and statuses such as 401 and 404, as an unknown result. Add a third modal state for this. It shows a neutral icon, says the status is unknown, and tells the user the check can still complete. Refresh the row for all outcomes. A check that does not return to the browser can still finish and persist a status.
Rebuilt preview, with the gateway timeout fixPreview URL: https://cloud-ui-git-test-ui-2bff5f80.preview.thundergun.io Vercel reports To check the corrected path, run Validate Connection against a version whose |
DO NOT MERGE until cloud release 3.161 rolls out past ring-0
The frontend deploys to every ring at the same time. An unflagged
re-expose is correct in ring-0 and incorrect in every other ring. Merge
this only after 3.161 covers all rings that serve the UI.
Summary
deployment detail page, and the status inside the compute pill on the
deployments list
showConnectionStatus, so a consumer can still hide the columnwithout a release of this package
which includes the detail row colspan
Why
PR #3718 hid the connection status behind
showConnectionStatus, whichdefaults to false. The UI was correct. Two backend defects made the
column show a permanent Pending status:
validateValidateSpecrejected an emptyValidateSpec, sohandleValidateSpecnever ran.Fix: Allow validating the current spec via an empty ValidateSpec request temporal-auto-scaled-workers#99, merged 2026-07-25.
version_workflow.gonever sentsyncSummary(), so an updatedComputeStatusnever reached the deployment workflow thatDescribeWorkerDeploymentreads.Fix: Propagate ComputeStatus to deployment workflow temporal#11273, merged 2026-08-03.
Both fixes are merged. Cloud release 3.161 carries them.
Where the flip belongs
The prop defaults to false here, and no route in this repo or in
cloud-ui passes it. Three options:
the column. This PR takes this option.
in a second repo and a UI pack bump, and it leaves a dead prop here.
It does not solve the ring problem either, because cloud-ui also
deploys to every ring at the same time.
ring-0 show the column while later rings hide it, because the server
reports its own support per cell. No such capability exists.
serverScaledDeploymentsis true on 3.158 and on 3.161 alike, so itselects the broken set, not the fixed set. A new capability needs a
change to temporalio/api, to the server, and to cloud, which takes
longer than the rollout it would guard.
Option 1 with the prop kept gives the same rollback lever at lower cost:
cloud-ui can pass
showConnectionStatus={false}if a ring turns out tobe behind.
Pending tooltip copy
Commit e6efe42 removed "or use Validate Connection to check now"
because the on-demand validation was a dry run. WCI#99 makes that
statement correct again.
handleValidateSpecnow writes the validationstatus and signals the version workflow when the request carries no
scaling group changes, which is what the manual action sends. The row
already refreshes after a validation, so the badge changes in place.
The 6h claim stays. The default of
workercontroller.periodic_validation_interval_sis 21600 seconds.Client contract
validateCurrentWorkerDeploymentVersionComputeConfigkeeps itsvoidreturn.
ValidateWorkerDeploymentVersionComputeConfigResponseis anempty message, so the earlier
{ valid, message }shape never matchedthe server.
The verdict does not need that shape.
handleValidateSpecreturnsInvalidArgumentfor a failed check, and it carries the same message itwrites to
provider_validation.error_message. A success returns an empty200. The modal and the badge cannot disagree.
Test plan
pnpm lint: 0 errorspnpm check: 0 errors across 851 filespnpm test -- --run: 3029 passed, 2 skippedpnpm test:integration: 315 passed, 1 skipped