Exit properly from scripts command (#1731)

* Fix scripts command exit

* Switch to debug
This commit is contained in:
Volodymyr Stoiko 2025-03-31 23:04:18 +03:00 committed by GitHub
parent dc50ef48fd
commit 3c13a8d96b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -123,7 +123,7 @@ func createScript(provider *kubernetes.Provider, script misc.ConfigMapScript) (i
} }
if k8serrors.IsConflict(err) { if k8serrors.IsConflict(err) {
log.Warn().Err(err).Msg("Conflict detected, retrying update...") log.Debug().Err(err).Msg("Conflict detected, retrying update...")
time.Sleep(500 * time.Millisecond) time.Sleep(500 * time.Millisecond)
continue continue
} }
@ -332,23 +332,29 @@ func watchConfigMap(ctx context.Context, provider *kubernetes.Provider) {
continue continue
} }
// Create a goroutine to process events
watcherClosed := make(chan struct{})
go func() {
defer close(watcherClosed)
for event := range watcher.ResultChan() { for event := range watcher.ResultChan() {
select {
case <-ctx.Done():
log.Info().Msg("ConfigMap watcher loop exiting gracefully.")
watcher.Stop()
return
default:
if event.Type == watch.Added { if event.Type == watch.Added {
log.Info().Msg("ConfigMap created or modified") log.Info().Msg("ConfigMap created or modified")
runScriptsSync(provider) runScriptsSync(provider)
} else if event.Type == watch.Deleted { } else if event.Type == watch.Deleted {
log.Warn().Msg("ConfigMap deleted, waiting for recreation...") log.Warn().Msg("ConfigMap deleted, waiting for recreation...")
watcher.Stop()
break break
} }
} }
}()
// Wait for either context cancellation or watcher completion
select {
case <-ctx.Done():
watcher.Stop()
log.Info().Msg("ConfigMap watcher stopping due to context cancellation")
return
case <-watcherClosed:
log.Info().Msg("Watcher closed, restarting...")
} }
time.Sleep(5 * time.Second) time.Sleep(5 * time.Second)