From d15ea69cc035ba98ec5426f44a08303df0defdd7 Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Tue, 18 Oct 2022 13:46:18 -0500 Subject: [PATCH] fix: `time.NewTicker` leaks --- agent/apphealth.go | 5 ++++- enterprise/derpmesh/derpmesh_test.go | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/agent/apphealth.go b/agent/apphealth.go index d53c76e57a9b8..88e107160d99a 100644 --- a/agent/apphealth.go +++ b/agent/apphealth.go @@ -60,8 +60,10 @@ func NewWorkspaceAppHealthReporter(logger slog.Logger, workspaceAgentApps Worksp continue } app := nextApp - t := time.NewTicker(time.Duration(app.Healthcheck.Interval) * time.Second) go func() { + t := time.NewTicker(time.Duration(app.Healthcheck.Interval) * time.Second) + defer t.Stop() + for { select { case <-ctx.Done(): @@ -118,6 +120,7 @@ func NewWorkspaceAppHealthReporter(logger slog.Logger, workspaceAgentApps Worksp lastHealth := copyHealth(health) mu.Unlock() reportTicker := time.NewTicker(time.Second) + defer reportTicker.Stop() // every second we check if the health values of the apps have changed // and if there is a change we will report the new values. for { diff --git a/enterprise/derpmesh/derpmesh_test.go b/enterprise/derpmesh/derpmesh_test.go index 7fad141238442..7c7331d21c355 100644 --- a/enterprise/derpmesh/derpmesh_test.go +++ b/enterprise/derpmesh/derpmesh_test.go @@ -74,6 +74,7 @@ func TestDERPMesh(t *testing.T) { go func() { defer close(closed) ticker := time.NewTicker(50 * time.Millisecond) + defer ticker.Stop() for { select { case <-ctx.Done(): @@ -118,6 +119,7 @@ func TestDERPMesh(t *testing.T) { go func() { defer close(closed) ticker := time.NewTicker(50 * time.Millisecond) + defer ticker.Stop() for { select { case <-ctx.Done(): @@ -169,6 +171,7 @@ func TestDERPMesh(t *testing.T) { go func() { defer close(closed) ticker := time.NewTicker(50 * time.Millisecond) + defer ticker.Stop() for { select { case <-ctx.Done():