[Feature Request] Decode workflow histories concurrently with remote codec servers
维护者通常 1 天内回复
评估
调研方向
从构造 NewPayloadCodecGRPCClientInterceptor 的 cliext/client.go 开始,并了解 api-go 对 VisitPayloadsOptions.ConcurrencyLimit 的支持。跟踪拦截器的 payload visitor 如何处理 workflow 历史记录中的 payload,并确定应如何配置有界并发。完成的标准是:在保留 CLI 的 workflow 历史记录导出行为的同时,远程 codec 请求不再针对每个访问到的字段串行等待。
由索引模型根据 Issue 内容生成。
描述
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
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
temporalio/cli 的其他 Issue
-
enhancement
难度 1/5 1 小时以内 新手友好度 70/100
temporalio/cli#776 ·
维护者通常 1 天内回复
-
enhancement
难度 5/5 一周以上 新手友好度 38/100
temporalio/cli#1178 · 1 条评论 ·
维护者通常 1 天内回复
-
enhancement
难度 5/5 一周以上 新手友好度 35/100
temporalio/cli#1098 · 2 条评论 ·
维护者通常 1 天内回复
-
[Feature Request] Keep Dynamic Config Overrides up to date.可能重新可做 @chaptersix 于 136 天前认领,目前没有进行中的 PR。 未关闭enhancement
temporalio/cli#1083 · 已指派 1 人 ·
维护者通常 1 天内回复
-
feat: support piped input可能重新可做 @ks-temporal 于 136 天前认领,目前没有进行中的 PR。 未关闭
temporalio/cli#1031 · 已指派 1 人 ·
维护者通常 1 天内回复
相似的 Issue
-
[flaky test] TestValidatorCommitterDropsEmptyStatusBatch: submits to the mock VC before its stream is registered可能已有人在做 @liran-funaro 今天认领。 未关闭coordinator flaky-test race-condition testing
难度 2/5 1-3 小时 新手友好度 83/100
hyperledger/fabric-x-committer#876 ·
维护者通常 1 天内回复
-
kind/features
难度 2/5 1-3 小时 新手友好度 65/100
TencentBlueKing/bk-nodemgr#3804 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
cloudnative-pg/plugin-barman-cloud#1187 ·
维护者通常 1 天内回复
-
[deliverclient] Remove the unused common/deliverclient package可能已有人在做 @liran-funaro 今天认领。 未关闭code-hygiene
难度 2/5 1-3 小时 新手友好度 72/100
hyperledger/fabric-x-common#236 ·
维护者通常 1 天内回复
-
consensus feature I2 S4 U2
难度 1/5 1 小时以内 新手友好度 85/100
维护者通常 1 天内回复