Skip to content

Commit 35cebf6

Browse files
committed
chore: review feedback
Signed-off-by: Danny Kopping <dannykopping@gmail.com>
1 parent e3591c2 commit 35cebf6

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

enterprise/coderd/prebuilds/metricscollector.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"cdr.dev/slog"
1313

1414
"github.com/coder/coder/v2/coderd/database"
15+
"github.com/coder/coder/v2/coderd/database/dbtime"
1516
"github.com/coder/coder/v2/coderd/prebuilds"
1617
)
1718

@@ -75,7 +76,7 @@ type MetricsCollector struct {
7576
logger slog.Logger
7677
snapshotter prebuilds.StateSnapshotter
7778

78-
latestState atomic.Pointer[state]
79+
latestState atomic.Pointer[metricsState]
7980
}
8081

8182
var _ prometheus.Collector = new(MetricsCollector)
@@ -106,6 +107,7 @@ func (mc *MetricsCollector) Collect(metricsCh chan<- prometheus.Metric) {
106107
currentState := mc.latestState.Load() // Grab a copy; it's ok if it goes stale during the course of this func.
107108
if currentState == nil {
108109
mc.logger.Warn(context.Background(), "failed to set prebuilds metrics; state not set")
110+
metricsCh <- prometheus.MustNewConstMetric(lastUpdateDesc, prometheus.GaugeValue, 0)
109111
return
110112
}
111113

@@ -135,7 +137,7 @@ func (mc *MetricsCollector) Collect(metricsCh chan<- prometheus.Metric) {
135137
metricsCh <- prometheus.MustNewConstMetric(lastUpdateDesc, prometheus.GaugeValue, float64(currentState.createdAt.Unix()))
136138
}
137139

138-
type state struct {
140+
type metricsState struct {
139141
prebuildMetrics []database.GetPrebuildMetricsRow
140142
snapshot *prebuilds.GlobalSnapshot
141143
createdAt time.Time
@@ -164,7 +166,6 @@ func (mc *MetricsCollector) BackgroundFetch(ctx context.Context, updateInterval,
164166
// UpdateState builds the current metrics state.
165167
func (mc *MetricsCollector) UpdateState(ctx context.Context, timeout time.Duration) error {
166168
start := time.Now()
167-
mc.logger.Debug(ctx, "fetching prebuilds metrics state")
168169
fetchCtx, fetchCancel := context.WithTimeout(ctx, timeout)
169170
defer fetchCancel()
170171

@@ -179,10 +180,10 @@ func (mc *MetricsCollector) UpdateState(ctx context.Context, timeout time.Durati
179180
}
180181
mc.logger.Debug(ctx, "fetched prebuilds metrics state", slog.F("duration_secs", fmt.Sprintf("%.2f", time.Since(start).Seconds())))
181182

182-
mc.latestState.Store(&state{
183+
mc.latestState.Store(&metricsState{
183184
prebuildMetrics: prebuildMetrics,
184185
snapshot: snapshot,
185-
createdAt: time.Now(),
186+
createdAt: dbtime.Now(),
186187
})
187188
return nil
188189
}

enterprise/coderd/prebuilds/reconcile.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,12 @@ func NewStoreReconciler(store database.Store,
6868
provisionNotifyCh: make(chan database.ProvisionerJob, 10),
6969
}
7070

71-
reconciler.metrics = NewMetricsCollector(store, logger, reconciler)
72-
if err := registerer.Register(reconciler.metrics); err != nil {
73-
// If the registerer fails to register the metrics collector, it's not fatal.
74-
logger.Error(context.Background(), "failed to register prometheus metrics", slog.Error(err))
71+
if registerer != nil {
72+
reconciler.metrics = NewMetricsCollector(store, logger, reconciler)
73+
if err := registerer.Register(reconciler.metrics); err != nil {
74+
// If the registerer fails to register the metrics collector, it's not fatal.
75+
logger.Error(context.Background(), "failed to register prometheus metrics", slog.Error(err))
76+
}
7577
}
7678

7779
return reconciler
@@ -92,8 +94,8 @@ func (c *StoreReconciler) Run(ctx context.Context) {
9294
ticker := c.clock.NewTicker(reconciliationInterval)
9395
defer ticker.Stop()
9496
defer func() {
95-
c.done <- struct{}{}
9697
wg.Wait()
98+
c.done <- struct{}{}
9799
}()
98100

99101
// nolint:gocritic // Reconciliation Loop needs Prebuilds Orchestrator permissions.

0 commit comments

Comments
 (0)