@@ -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,15 +24,18 @@ 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 )
25
- defer ticker .Stop ()
31
+
32
+ timer := time .NewTimer (delay )
33
+ defer timer .Stop ()
26
34
for {
27
35
select {
28
36
case <- ctx .Done ():
29
37
return
30
- case <- ticker .C :
38
+ case <- timer .C :
31
39
}
32
40
33
41
var eg errgroup.Group
@@ -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
+ timer .Reset (delay )
47
57
}
48
58
}()
49
59
return & instance {