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

flake: TestTasksCreate (multiple variants)

未关闭 适合新手
#1,637 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
72/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
冷清
技术栈
go
领域
testing

调研方向

从 coderd/aitasks_test.go 中的 TestTasksCreate 开始,重点查看 1719-2130 行附近的 setup 和 CreateTask 调用。运行 go test ./coderd -run '^TestTasksCreate$' -count=100,最好在 Windows 上或增加 contention 的情况下运行,并验证所有变体都能在没有 context deadline failures 的情况下完成,同时其现有 assertions 仍然通过。

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

描述

flake

CI failure

The complete 4,462-line Windows job log was available and reviewed. The macOS matrix job was canceled only after this Windows job failed; this is not a matrix-cancellation artifact.

Failure evidence

Seven TestTasksCreate variants failed at the same API call with the same expired request context:

=== FAIL: coderd TestTasksCreate/TaskTableCreatedAndLinked (17.07s)
aitasks_test.go:1968:
    Post "http://127.0.0.1:52750/api/v2/tasks/me": context deadline exceeded

=== FAIL: coderd TestTasksCreate/OK (17.13s)
aitasks_test.go:1751:
    Post "http://127.0.0.1:52230/api/v2/tasks/me": context deadline exceeded

=== FAIL: coderd TestTasksCreate/MultipleTasksForSameUser (17.08s)
aitasks_test.go:2060:
    Post "http://127.0.0.1:52756/api/v2/tasks/me": context deadline exceeded

=== FAIL: coderd TestTasksCreate/FailsOnInvalidTemplate (17.07s)
aitasks_test.go:1936:
    expected: *codersdk.Error
    in chain: Post "http://127.0.0.1:52831/api/v2/tasks/me": context deadline exceeded

=== FAIL: coderd TestTasksCreate/TaskWithCustomName (17.08s)
aitasks_test.go:2026:
    Post "http://127.0.0.1:52697/api/v2/tasks/me": context deadline exceeded

=== FAIL: coderd TestTasksCreate/TaskLinkedToCorrectTemplateVersion (17.13s)
aitasks_test.go:2122:
    Post "http://127.0.0.1:52747/api/v2/tasks/me": context deadline exceeded

=== FAIL: coderd TestTasksCreate/FailsOnNonTaskTemplate (17.26s)
aitasks_test.go:1906:
    expected: *codersdk.Error
    in chain: Post "http://127.0.0.1:52830/api/v2/tasks/me": context deadline exceeded

All template-version build jobs completed successfully immediately before the failing CreateTask requests. This is one synchronized test-family timeout, not seven independent product failures.

Root cause assessment

Classification: flaky test / timing-dependent deadline exhaustion on Windows.

Each failing subtest creates a 10-second context at the beginning of the test body:

ctx := testutil.Context(t, testutil.WaitShort) // WaitShort = 10s

It then performs expensive setup with that deadline already ticking:

  1. starts an in-process coderd and provisioner daemon;
  2. creates/logs in the first user;
  3. uploads a template version;
  4. waits for the provisioner import job;
  5. creates a template;
  6. only then calls client.CreateTask(ctx, ...).

Under full-suite Windows load, setup consumed essentially the entire 10-second budget. The seven parallel variants consequently reached POST /api/v2/tasks/me with expired or nearly expired contexts and failed together after roughly 17.1 seconds of reported subtest time. Server logs show setup and template imports succeeding; there is no database outage or product panic.

A deterministic fix is to create a fresh request context immediately before CreateTask (and fresh contexts for later assertions), or use WaitLong for end-to-end variants whose setup is intentionally included in the deadline. The context should not be started before server/template setup.

Race, panic, OOM, and resource checks

The full job log contains no WARNING: DATA RACE, race detected during execution of test, panic/runtime-error trace, OOM, killed process, allocation failure, disk exhaustion, or file-descriptor exhaustion indicator. This was a normal assertion failure, not a process crash.

Assignment analysis

Ownership/history targets:

git blame -L 1719,2130 coderd/aitasks_test.go
git log --oneline -10 --follow coderd/aitasks_test.go

The most recent non-trivial modifier of TestTasksCreate itself is 30112075 (feat: add display name field for tasks, PR coder/coder#20856) by ssncferreira. That change substantially expanded the CustomNames portion of this exact function and retained the same early WaitShort context pattern. Later file changes either modify separate task tests or unrelated areas.

Assigning ssncferreira based on the failing test-function history, not the author of the CI commit.

Duplicate search

Searched open and closed coder/internal issues, including issues closed in the last 30 days, for:

  • TestTasksCreate, TasksCreate, and individual failing variants;
  • api/v2/tasks/me + context deadline exceeded;
  • aitasks_test.go, Windows task timeouts, and WaitShort;
  • database/timing errors, process crashes, panic/OOM/unknown failures, and race signatures.

No issue describes this exact test family and deadline-exhaustion mode.

Related but not duplicate:

Reproduction

Most likely on Windows under full-suite parallel load:

go test ./coderd -run '^TestTasksCreate$' -count=100

To amplify locally, add delay or CPU/DB contention before CreateTask; the current context begins before all server and template setup.

主要语言
没有语言数据
星标
3
派生
0
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

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

coder/internal 的其他 Issue

查看 coder/internal 的全部 Issue

相似的 Issue

更多 Testing & QA Issue

把新 issue 发到你的邮箱

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