From 87d8ab1552dbb0501a2efd6c60e60b45b2ae2cac Mon Sep 17 00:00:00 2001 From: Navid Yaghoobi Date: Sat, 1 Mar 2025 13:19:52 +1100 Subject: [PATCH] bugfix panic in system events Signed-off-by: Navid Yaghoobi --- .golangci.yml | 1 + system/events.go | 28 +++++++++------------------- system/health.go | 3 +++ 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 28a24d755..84f405564 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -12,6 +12,7 @@ linters: - execinquery - funlen - depguard + - nolintlint # generics disabled - wastedassign - rowserrcheck diff --git a/system/events.go b/system/events.go index c2f72ace7..0cc2429a6 100644 --- a/system/events.go +++ b/system/events.go @@ -39,28 +39,13 @@ func (engine *Engine) startEventStreamer() { engine.sysEvents.mu.Unlock() go engine.eventReader() - go engine.streamEvents() -} - -func (engine *Engine) streamEvents() { - log.Debug().Msg("health check: pdcs event steamer started") - - for { + go func() { if err := sysinfo.Events(engine.sysEvents.eventChan, engine.sysEvents.eventCancelChan); err != nil { - log.Error().Msgf("health check: pdcs event streamer %v", err) - engine.sysEvents.cancelChan <- true - engine.sysEvents.mu.Lock() - engine.sysEvents.status = false - engine.sysEvents.mu.Unlock() - log.Debug().Msgf("health check: pdcs event steamer cancel sent") + log.Error().Msgf("health check: event streamer %v", err) - break + engine.sysEvents.cancelChan <- true } - } - - log.Debug().Msg("health check: pdcs event streamer stopped") - - close(engine.sysEvents.eventCancelChan) + }() } func (engine *Engine) eventReader() { @@ -70,6 +55,11 @@ func (engine *Engine) eventReader() { select { case <-engine.sysEvents.cancelChan: log.Debug().Msg("health check: event reader stopped") + engine.sysEvents.eventCancelChan <- true + + engine.sysEvents.mu.Lock() + engine.sysEvents.status = false + engine.sysEvents.mu.Unlock() close(engine.sysEvents.cancelChan) registry.CancelContext() diff --git a/system/health.go b/system/health.go index 668fb019d..37095adc4 100644 --- a/system/health.go +++ b/system/health.go @@ -68,6 +68,9 @@ func (engine *Engine) Disconnect() { } log.Debug().Msgf("health: disconnect") + + engine.sysEvents.cancelChan <- true + registry.SetConnectionStatus(registry.ConnectionStatusDisconnected) engine.conn.setStatus(registry.ConnectionStatusDisconnected, "") registry.UnsetConnection()