diff --git a/pkg/heartbeat/service.go b/pkg/heartbeat/service.go index ba85d71..0f564bf 100644 --- a/pkg/heartbeat/service.go +++ b/pkg/heartbeat/service.go @@ -14,6 +14,7 @@ type HeartbeatService struct { interval time.Duration enabled bool mu sync.RWMutex + started bool stopChan chan struct{} } @@ -31,7 +32,7 @@ func (hs *HeartbeatService) Start() error { hs.mu.Lock() defer hs.mu.Unlock() - if hs.running() { + if hs.started { return nil } @@ -39,6 +40,7 @@ func (hs *HeartbeatService) Start() error { return fmt.Errorf("heartbeat service is disabled") } + hs.started = true go hs.runLoop() return nil @@ -48,10 +50,11 @@ func (hs *HeartbeatService) Stop() { hs.mu.Lock() defer hs.mu.Unlock() - if !hs.running() { + if !hs.started { return } + hs.started = false close(hs.stopChan) }