Skip to content

fix: 修复 DAG 对照基准固定依赖的丢失唤醒 - #526

Merged
Luo-root merged 1 commit into
mainfrom
fix/dag-azure-wakeup-20261029
Oct 30, 2026
Merged

Luo-root merged 1 commit into
mainfrom
fix/dag-azure-wakeup-20261029

Conversation

@Luo-root

Copy link
Copy Markdown
Owner

关联 Issue

Closes #523;见全仓发版前体检 #521。

改了什么

将独立 benchmarks/dag 模块的 Azure/go-workflow 从 v0.1.13 固定到官方修复提交 7eff231079d7691d749787a8874514968acd15c7 对应的 v0.1.14-0.20260504053439-7eff231079d7。

旧版本工作 goroutine 先通知完成、后归还并发额度;调度循环可能在额度尚未归还时被唤醒,重新等待后又得不到归还额度的通知,挂在 Workflow.Do 的 Cond.Wait。此 PR 选择精确的官方最小修复提交,不升级到后续 API 重构。

双语复跑说明区分当前代码与历史样本:旧报告仍保留 v0.1.13 和原始超时,复现历史须检出对应提交;当前依赖产生的样本必须另存,不覆盖或混算历史。

新增

TestAzureConcurrencyProgress 在独立测试进程中用 4 个线程、业务额度 1、三节点链连续执行 4096 次(每次 verify 两轮复用)。子进程 15 秒测试超时,父进程 20 秒回收上限;旧依赖不响应 ctx 的死锁不会无限挂住整套 CI。

影响范围

仅影响 DAG 对照模块的固定依赖、正确性回归及双语复跑说明。Pulse 根 go.mod/go.sum、适配器、原生 MaxConcurrency、计时边界及历史报告均不变。

正确性探针不能证明生产吞吐改善;此死锁也不能解释所有历史 timeout。此次没有新增性能结果或 Durable 进程恢复验收结论。

测试

Go 1.26.10、Windows amd64;GOWORK=off GOTOOLCHAIN=local。

  • 负控:相同新回归通过仓外 -modfile 选择旧 v0.1.13 后,15 秒失败,栈确认停在 Azure Workflow.Do 的 sync.Cond.Wait;新版本该回归通过。
  • 原失败路径 go test -mod=readonly -race -count=100 -timeout=90s -run '^TestCorrectness$/^azure$/^chain$/^N100$/^R1$/^P4$' . 通过,28.420s。
  • Azure-only 三节点容量 1 的有界 race 探针通过;与旧版复现使用同一探针,保留原始证据。
  • 修复分支完整 go test -mod=readonly -race -count=1 -timeout=180s ./... 通过,7.118s;go vet -mod=readonly ./... 和 go mod verify 通过。
  • 最终独立 clone 按原命令 go build -mod=readonly ./...、go vet -mod=readonly ./...、完整 race 均通过,race 7.952s。分支 worktree 本地 Go VCS 状态识别异常仅在该处使用 -buildvcs=false,最终 clone 未使用此选项。
  • 独立复审 PASS,P0–P3 与待拍板均为 0:36 组配置各复用 8 轮、12 个实例并行,以及 6 组运行中取消后复用通过 race;99 个实际编译包导入路径一致,仅 Azure 版本变化;上游变更文件的导出签名一致。
  • 最终候选全仓 155 个已跟踪 Go 文件 gofmt 输出为空;git diff --check 通过。

审查关注点

上游提交必须精确对应已确认丢失唤醒修复,不能通过绕开原生额度或跳过 Azure 变绿;回归子进程有界且检查真实输出;当前版本与历史报告身份保持清楚。

自审

  • 已阅读官方 patch、实际依赖和适配器调用方。
  • 5 文件、46+/9−;未引入凭据、探针、二进制或 raw 结果。
  • 使用说明中英文已同步,历史身份未改写。
  • 新增说明性注释为中文,机器指令和原输出保持不变。

@Luo-root
Luo-root merged commit 0ea38d8 into main Oct 30, 2026
6 checks passed
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.

fix: 修复 DAG 对照基准固定依赖导致的丢失唤醒

1 participant