Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[Feature Request] Decode workflow histories concurrently with remote codec servers

未关闭
#1,193 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@chaptersix 已经在做这个了。

开始于 2026年9月13日。

  • #1206 来自 @chaptersix —— 未关闭

评估

难度
4/5
预计耗时
3-5 天
新手友好度
65/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
go
领域
cli

调研方向

从构造 NewPayloadCodecGRPCClientInterceptor 的 cliext/client.go 开始,并了解 api-go 对 VisitPayloadsOptions.ConcurrencyLimit 的支持。跟踪拦截器的 payload visitor 如何处理 workflow 历史记录中的 payload,并确定应如何配置有界并发。完成的标准是:在保留 CLI 的 workflow 历史记录导出行为的同时,远程 codec 请求不再针对每个访问到的字段串行等待。

由索引模型根据 Issue 内容生成。

描述

enhancement
Is your feature request related to a problem? Please describe.

When the CLI is using Temporal Cloud and configured with a remote codec server, exporting a large workflow history can be very slow:

temporal workflow show \
  --workflow-id <workflow-id> \
  --output json > history.json

The codec protocol supports sending multiple payloads in one /decode request. However, the CLI's payload visitor makes a separate request for each payload or Payloads field it encounters and processes those visits serially.

Because workflows contain so many payloads, even a small amount of latency (~50ms) causes some exports to take 5+ minutes for us.

Increasing the RPC timeout prevents the operation from timing out, but does not address the latency.

Describe the solution you'd like

Remote codec calls made while processing a workflow history should be concurrent, batched more broadly, or otherwise avoid paying one network round trip serially for every visited field.

api-go now supports opt-in concurrent payload visiting through VisitPayloadsOptions.ConcurrencyLimit, which may provide a path to doing this with bounded concurrency.

Additional context

This was previously recognized in:

That issue explicitly mentioned concurrently calling the codec instead of using the serial visitor. It was closed by https://github.com/temporalio/cli/pull/676, which added a configurable RPC timeout but did not address the underlying latency.

There is also an open cross-SDK feature tracking concurrent payload visiting:

The Temporal CLI item remains unchecked. The underlying Go support has since landed:

The CLI currently constructs NewPayloadCodecGRPCClientInterceptor here:

https://github.com/temporalio/cli/blob/main/cliext/client.go

However, that interceptor is currently used without configuring the payload visitor's concurrency option.

主要语言
Go
星标
389
派生
116
平均合并
3 天 13 小时
30 天内合并 PR
4

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

temporalio/cli 的其他 Issue

查看 temporalio/cli 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。