mirror of
https://github.com/hanzoai/tasks.git
synced 2026-10-04 02:04:03 +00:00
<!-- Describe what has changed in this PR --> **What changed?** I replaced all usages of `time.After` with `time.NewTimer`. I also added a linter rule which bans usage of `time.After`. <!-- Tell your future self why have you made these changes --> **Why?** `time.After` leaks resources. It's unclear what resources exactly because `startTimer` is [implemented in src/runtime](https://go.dev/src/runtime/time.go#L206), and the docs just say "The underlying Timer is not recovered by the garbage collector until the timer fires." In any case, `NewTimer` is strictly more efficient, and it's not much harder to use. <!-- How have you verified this change? Tested locally? Added a unit test? Checked in staging env? --> **How did you test it?** I verified that I can create an issue with it: <img width="1415" alt="image" src="https://github.com/temporalio/temporal/assets/5942963/315b6839-bdd4-4127-a3dc-1db966755366"> <!-- Assuming the worst case, what can be broken when deploying this change to production? --> **Potential risks** This is a bit more verbose for people to use. People also may forget to call `.Stop()`. <!-- Is this PR a hotfix candidate or require that a notification be sent to the broader community? (Yes/No) --> **Is hotfix candidate?** No