MCPcopy Index your code
hub / github.com/coder/coder / New

Function New

coderd/metricscache/metricscache.go:50–84  ·  view source on GitHub ↗
(db database.Store, log slog.Logger, clock quartz.Clock, intervals Intervals, usage bool)

Source from the content-addressed store, hash-verified

48}
49
50func New(db database.Store, log slog.Logger, clock quartz.Clock, intervals Intervals, usage bool) *Cache {
51 if intervals.TemplateBuildTimes <= 0 {
52 intervals.TemplateBuildTimes = time.Hour
53 }
54 if intervals.DeploymentStats <= 0 {
55 intervals.DeploymentStats = time.Minute
56 }
57 ctx, cancel := context.WithCancel(context.Background())
58
59 c := &Cache{
60 clock: clock,
61 database: db,
62 intervals: intervals,
63 log: log,
64 done: make(chan struct{}),
65 cancel: cancel,
66 usage: usage,
67 }
68 go func() {
69 var wg sync.WaitGroup
70 defer close(c.done)
71 wg.Add(1)
72 go func() {
73 defer wg.Done()
74 c.run(ctx, "template build times", intervals.TemplateBuildTimes, c.refreshTemplateBuildTimes)
75 }()
76 wg.Add(1)
77 go func() {
78 defer wg.Done()
79 c.run(ctx, "deployment stats", intervals.DeploymentStats, c.refreshDeploymentStats)
80 }()
81 wg.Wait()
82 }()
83 return c
84}
85
86func (c *Cache) refreshTemplateBuildTimes(ctx context.Context) error {
87 //nolint:gocritic // This is a system service.

Callers 2

NewFunction · 0.92
newMetricsCacheFunction · 0.92

Calls 4

runMethod · 0.95
AddMethod · 0.65
WaitMethod · 0.65
DoneMethod · 0.45

Tested by 1

newMetricsCacheFunction · 0.74