flake: TestTasksCreate (multiple variants)
- Dominant language
- No language data
- Stars
- 3
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
## CI failure
- **CI run:** https://github.com/coder/coder/actions/runs/30976975074
- **Failing job:** https://github.com/coder/coder/actions/runs/30976975074/job/92212913393 (`test-go-pg (windows-2022)`)
- **Failure date:** 2026-08-05 05:15 UTC; job completed at 05:21 UTC, before the 05:29 Slack alert
- **Run attempt:** 1
- **Commit:** [`7a4ae2649eb592b961c142caf43dbe064a15a308`](https://github.com/coder/coder/commit/7a4ae2649eb592b961c142caf43dbe064a15a308)
- **Commit author:** Jake Howell
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:
```text
=== 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:
```go
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:
```text
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`](https://github.com/coder/coder/commit/3011207519eceb7a15a320cb8586dafab8eee83c) (`feat: add display name field for tasks`, PR [coder/coder#20856](https://github.com/coder/coder/pull/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:
- https://github.com/coder/internal/issues/1561 — CLI golden tests with broad slow-CI context deadlines, different package/test and setup path.
- https://github.com/coder/internal/issues/1600 — race-detector fallout involving `TestTasks/UpdateInput`, different test and root cause.
- https://github.com/coder/internal/issues/1320 — old `TestTasks` race-job report without this `TestTasksCreate` signature.
## Reproduction
Most likely on Windows under full-suite parallel load:
```text
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.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start in coderd/aitasks_test.go at TestTasksCreate, especially the setup and CreateTask calls around lines 1719-2130. Run `go test ./coderd -run '^TestTasksCreate$' -count=100`, ideally on Windows or with added contention, and verify that all variants complete without context deadline failures while their existing assertions still pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- testing
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 72/100