Skip to content

Upgrade go.temporal.io/server to 1.32.0 and forward new admin/workflow RPCs#243

Merged
hehaifengcn merged 9 commits into
mainfrom
haifeng/upgrade-temporal-server-1.32.0
Jul 17, 2026
Merged

Upgrade go.temporal.io/server to 1.32.0 and forward new admin/workflow RPCs#243
hehaifengcn merged 9 commits into
mainfrom
haifeng/upgrade-temporal-server-1.32.0

Conversation

@hehaifengcn

Copy link
Copy Markdown
Collaborator
  • upgrade go.temporal.io/server v1.32.0-157.6
  • Add pass-through admin RPCs for temporal server 1.32.0
  • Forward all globalAPIResponses workflow RPCs; add forwarding guard tests

What was changed

Why?

Checklist

  1. Closes

  2. How was this tested:

  1. Any docs updates needed?

hehaifengcn and others added 3 commits July 14, 2026 09:45
Implement the 8 AdminService RPCs that were only covered by the embedded
UnimplementedAdminServiceServer, forwarding each to the upstream adminClient:
DeepHealthCheck, DescribeTaskQueuePartition, ForceUnloadTaskQueuePartition,
GenerateLastHistoryReplicationTasks, GetTaskQueueUserData, MigrateSchedule,
StartAdminBatchOperation, SyncWorkflowState.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add pass-through implementations for the workflow-service RPCs listed in
globalAPIResponses that were only satisfied by the embedded
UnimplementedWorkflowServiceServer (worker deployments, activity executions,
nexus operation executions, workflow rules, workers, and a few others),
forwarding each to the upstream workflowServiceClient.

Add TestAllAdminMethodsForwarded and TestGlobalAPIsForwarded, which detect
RPCs that silently fall through to the embedded Unimplemented default instead
of being explicitly forwarded. The compiler cannot catch such gaps because the
embedded server keeps the interface satisfied, so these guard against dropped
forwards on a go.temporal.io/server upgrade.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@hehaifengcn
hehaifengcn requested a review from a team as a code owner July 14, 2026 21:43
hehaifengcn and others added 4 commits July 14, 2026 14:57
Move off the Node 20 action runtime (deprecated on GitHub Actions runners)
to the Node 24 runtime by upgrading actions/checkout v4 -> v5 and
actions/setup-go v4 -> v6.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Server 1.32 added a guard that rejects RemoveRemoteCluster while any
multi-cluster namespace still references the cluster. Two teardown changes
make the failover suite pass again:

- deglobalizeNamespace: fail the namespace back to clusterA as a standalone
  update first (via ensureNamespaceActive), then shrink the cluster list in a
  separate config-only UpdateNamespace. Combining an active-cluster change and
  a config change in one request on a global namespace is rejected with
  errCannotDoNamespaceFailoverAndUpdate, so the previous single-request
  deglobalize never actually cleared the reference.
- removeRemoteCluster: retry until the removal-guard's namespace registry
  snapshot (GetAllNamespaces) reflects the deglobalization, which can lag the
  DescribeNamespace read used by deglobalizeNamespace by up to the cache
  refresh interval.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

ctx := context.Background()

s.ensureNamespaceActive(s.clusterA.ClusterName())

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

in 1.32.0, we can't update ActiveCluster and Clusters in one UpdateNamespaceRequest request. see https://github.com/temporalio/temporal/blob/f93f567d8395042b132ff69685053e0282e15416/service/frontend/namespace_handler.go#L579

…pace translation

- interceptor/reflection.go: add the temporal 1.32 pause/unpause/time-skipping
  history event types to namespaceTranslationSkippableHistoryEvents. They carry
  no namespace field, so they belong in the skip-list (restores the efficiency
  short-circuit instead of walking them).
- Add .claude/skills/check-namespace-fields: a skill that recursively scans all
  replication tasks and all forwarded admin/workflow RPC request/response
  messages for namespace-name fields not covered by the translation maps.
- .gitignore: track .claude/skills/ (shared) while keeping .claude/ local
  settings ignored.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@@ -0,0 +1,206 @@
---

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.

should this "skill" just be a gha. The skill is just writing and interpreting code.

Comment thread interceptor/reflection.go
Comment on lines +123 to +124
// Added in temporal server 1.32. These pause/unpause/time-skipping event
// attributes carry no namespace field, so they are skippable.

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.

we should have PR links as reference for these. so 1. we can track 2. have a source to compare against

@hehaifengcn
hehaifengcn requested a review from pseudomuto July 16, 2026 23:44

@pseudomuto pseudomuto left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

LGTM 👍

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Are we pinning to an old version on purpose? Like, should this be v7?

uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

# See https://github.com/actions/setup-go/issues/316 for more info.
- name: Install go
uses: actions/setup-go@v4
uses: actions/setup-go@v6

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Same comment about older version (v7 is out)

@hehaifengcn
hehaifengcn merged commit a9f5316 into main Jul 17, 2026
5 checks passed
@hehaifengcn
hehaifengcn deleted the haifeng/upgrade-temporal-server-1.32.0 branch July 17, 2026 22:39
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.

3 participants