diff --git a/main.go b/main.go index 8bde6e8..afe9794 100644 --- a/main.go +++ b/main.go @@ -615,6 +615,9 @@ func main() { killSignals := make(chan os.Signal, 1) signal.Notify(killSignals, syscall.SIGINT, syscall.SIGTERM) + reloadSignals := make(chan os.Signal, 1) + signal.Notify(reloadSignals, syscall.SIGUSR1) + flag.Parse() confStr, err := os.ReadFile("config.yaml") @@ -680,7 +683,29 @@ func main() { go buildManager.syncWorker() go buildManager.htmlWorker() - <-killSignals +killLoop: + for { + select { + case <-killSignals: + break killLoop + case <-reloadSignals: + confStr, err := os.ReadFile("config.yaml") + if err != nil { + log.Fatalf("Unable to open config: %v", err) + } + + err = yaml.Unmarshal(confStr, &conf) + if err != nil { + log.Fatalf("Unable to parse config: %v", err) + } + + lvl, err := log.ParseLevel(conf.Logging.Level) + if err != nil { + log.Fatalf("Failure setting logging level: %v", err) + } + log.SetLevel(lvl) + } + } buildManager.exit = true buildManager.buildProcMutex.RLock() diff --git a/utils.go b/utils.go index b212f51..8ebed58 100644 --- a/utils.go +++ b/utils.go @@ -664,7 +664,7 @@ func housekeeping(repo string, wg *sync.WaitGroup) error { // compare db-version with repo version repoVer, err := pkg.repoVersion() if err != nil { - log.Infof("[HK/%s/%s] package not present on disk", pkg.FullRepo, pkg.Pkgbase) + log.Infof("[HK/%s/%s] package not present on disk (%v)", pkg.FullRepo, pkg.Pkgbase, err) // error means package was not found -> delete version & hash from db so rebuild can happen err := pkg.DbPackage.Update().ClearStatus().ClearHash().ClearRepoVersion().Exec(context.Background()) if err != nil {