diff --git a/coderd/provisionerdserver/provisionerdserver.go b/coderd/provisionerdserver/provisionerdserver.go index f1362b50ac6b1..f204cf2a728a4 100644 --- a/coderd/provisionerdserver/provisionerdserver.go +++ b/coderd/provisionerdserver/provisionerdserver.go @@ -183,16 +183,6 @@ func NewServer( if options.HeartbeatInterval == 0 { options.HeartbeatInterval = DefaultHeartbeatInterval } - // Avoid a nil check in s.heartbeat. - if options.HeartbeatFn == nil { - options.HeartbeatFn = func(hbCtx context.Context) error { - //nolint:gocritic // This is specifically for updating the last seen at timestamp. - return db.UpdateProvisionerDaemonLastSeenAt(dbauthz.AsSystemRestricted(hbCtx), database.UpdateProvisionerDaemonLastSeenAtParams{ - ID: id, - LastSeenAt: sql.NullTime{Time: time.Now(), Valid: true}, - }) - } - } s := &server{ lifecycleCtx: lifecycleCtx, @@ -219,6 +209,10 @@ func NewServer( heartbeatFn: options.HeartbeatFn, } + if s.heartbeatFn == nil { + s.heartbeatFn = s.defaultHeartbeat + } + go s.heartbeatLoop() return s, nil } @@ -276,6 +270,14 @@ func (s *server) heartbeat(ctx context.Context) error { } } +func (s *server) defaultHeartbeat(ctx context.Context) error { + //nolint:gocritic // This is specifically for updating the last seen at timestamp. + return s.Database.UpdateProvisionerDaemonLastSeenAt(dbauthz.AsSystemRestricted(ctx), database.UpdateProvisionerDaemonLastSeenAtParams{ + ID: s.ID, + LastSeenAt: sql.NullTime{Time: s.timeNow(), Valid: true}, + }) +} + // AcquireJob queries the database to lock a job. // // Deprecated: This method is only available for back-level provisioner daemons.