Description
In pkg/cli/update_check.go around line 270, time.After(100ms) is used in a select statement. When the ctx.Done() case fires first, the time.After channel is not released until the timer fires 100 ms later, causing a GC-delayed resource leak.
Suggested Changes
Replace time.After(100 * time.Millisecond) with time.NewTimer and add defer timer.Stop().
Files Affected
pkg/cli/update_check.go (~line 270, inside CheckForUpdatesAsync)
Success Criteria
Source
Extracted from [repository-quality] Goroutine Lifecycle Hygiene #47586
Priority
Medium
🔍 Task mining by Discussion Task Miner - Code Quality Improvement Agent · sonnet46 · 67.5 AIC · ⌖ 5.28 AIC · ⊞ 7.1K · ◷
Description
In
pkg/cli/update_check.goaround line 270,time.After(100ms)is used in aselectstatement. When thectx.Done()case fires first, thetime.Afterchannel is not released until the timer fires 100 ms later, causing a GC-delayed resource leak.Suggested Changes
Replace
time.After(100 * time.Millisecond)withtime.NewTimerand adddefer timer.Stop().Files Affected
pkg/cli/update_check.go(~line 270, insideCheckForUpdatesAsync)Success Criteria
time.Afterreplaced withtime.NewTimer+defer timer.Stop()Source
Extracted from [repository-quality] Goroutine Lifecycle Hygiene #47586
Priority
Medium