Upgrade go.temporal.io/server to 1.32.0 and forward new admin/workflow RPCs#243
Conversation
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>
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()) |
There was a problem hiding this comment.
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 @@ | |||
| --- | |||
There was a problem hiding this comment.
should this "skill" just be a gha. The skill is just writing and interpreting code.
| // Added in temporal server 1.32. These pause/unpause/time-skipping event | ||
| // attributes carry no namespace field, so they are skippable. |
There was a problem hiding this comment.
we should have PR links as reference for these. so 1. we can track 2. have a source to compare against
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
| uses: actions/checkout@v5 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
Same comment about older version (v7 is out)
What was changed
Why?
Checklist
Closes
How was this tested: