From 80ef27f29c9776a89029a814d3096e73d66d2cba Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Wed, 5 Apr 2023 12:20:24 -0500 Subject: [PATCH 1/2] fix(dbpurge): use `dbauthz.AsSystemRestricted` Fixes: https://github.com/coder/coder/issues/7016 --- coderd/database/dbpurge/dbpurge.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/coderd/database/dbpurge/dbpurge.go b/coderd/database/dbpurge/dbpurge.go index e7d3876669e52..26c31dfa382f4 100644 --- a/coderd/database/dbpurge/dbpurge.go +++ b/coderd/database/dbpurge/dbpurge.go @@ -10,6 +10,11 @@ import ( "cdr.dev/slog" "github.com/coder/coder/coderd/database" + "github.com/coder/coder/coderd/database/dbauthz" +) + +const ( + delay = 24 * time.Hour ) // New creates a new periodically purging database instance. @@ -19,15 +24,18 @@ import ( func New(ctx context.Context, logger slog.Logger, db database.Store) io.Closer { closed := make(chan struct{}) ctx, cancelFunc := context.WithCancel(ctx) + //nolint:gocritic // The system purges old db records without user input. + ctx = dbauthz.AsSystemRestricted(ctx) go func() { defer close(closed) - ticker := time.NewTicker(24 * time.Hour) - defer ticker.Stop() + + timer := time.NewTimer(delay) + defer timer.Stop() for { select { case <-ctx.Done(): return - case <-ticker.C: + case <-timer.C: } var eg errgroup.Group @@ -44,6 +52,8 @@ func New(ctx context.Context, logger slog.Logger, db database.Store) io.Closer { } logger.Error(ctx, "failed to purge old database entries", slog.Error(err)) } + + timer.Reset(delay) } }() return &instance{ From 2993f65a84c143bdafe8ee7678f65e38ec98c68d Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Wed, 5 Apr 2023 12:35:08 -0500 Subject: [PATCH 2/2] fixup! fix(dbpurge): use `dbauthz.AsSystemRestricted` --- coderd/database/dbpurge/dbpurge.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/coderd/database/dbpurge/dbpurge.go b/coderd/database/dbpurge/dbpurge.go index 26c31dfa382f4..abafcb4559f25 100644 --- a/coderd/database/dbpurge/dbpurge.go +++ b/coderd/database/dbpurge/dbpurge.go @@ -29,13 +29,13 @@ func New(ctx context.Context, logger slog.Logger, db database.Store) io.Closer { go func() { defer close(closed) - timer := time.NewTimer(delay) - defer timer.Stop() + ticker := time.NewTicker(delay) + defer ticker.Stop() for { select { case <-ctx.Done(): return - case <-timer.C: + case <-ticker.C: } var eg errgroup.Group @@ -53,7 +53,7 @@ func New(ctx context.Context, logger slog.Logger, db database.Store) io.Closer { logger.Error(ctx, "failed to purge old database entries", slog.Error(err)) } - timer.Reset(delay) + ticker.Reset(delay) } }() return &instance{