@@ -10,6 +10,11 @@ import (
10
10
11
11
"cdr.dev/slog"
12
12
"github.com/coder/coder/coderd/database"
13
+ "github.com/coder/coder/coderd/database/dbauthz"
14
+ )
15
+
16
+ const (
17
+ delay = 24 * time .Hour
13
18
)
14
19
15
20
// New creates a new periodically purging database instance.
@@ -19,9 +24,12 @@ import (
19
24
func New (ctx context.Context ,logger slog.Logger ,db database.Store ) io.Closer {
20
25
closed := make (chan struct {})
21
26
ctx ,cancelFunc := context .WithCancel (ctx )
27
+ //nolint:gocritic // The system purges old db records without user input.
28
+ ctx = dbauthz .AsSystemRestricted (ctx )
22
29
go func () {
23
30
defer close (closed )
24
- ticker := time .NewTicker (24 * time .Hour )
31
+
32
+ ticker := time .NewTicker (delay )
25
33
defer ticker .Stop ()
26
34
for {
27
35
select {
@@ -44,6 +52,8 @@ func New(ctx context.Context, logger slog.Logger, db database.Store) io.Closer {
44
52
}
45
53
logger .Error (ctx ,"failed to purge old database entries" ,slog .Error (err ))
46
54
}
55
+
56
+ ticker .Reset (delay )
47
57
}
48
58
}()
49
59
return & instance {