diff --git a/pkg/administration/sites.go b/pkg/administration/sites.go index c1b0c78..2937d51 100644 --- a/pkg/administration/sites.go +++ b/pkg/administration/sites.go @@ -40,6 +40,7 @@ func doSyncSite(c *fiber.Ctx) error { // Reload sign.ReadInConfig(viper.GetString("paths.configs")) + sign.App.PreheatProcesses(func(total int, success int) {}) return c.SendStatus(fiber.StatusOK) } diff --git a/pkg/cmd/server/main.go b/pkg/cmd/server/main.go index 3e01b17..b4d3eb5 100644 --- a/pkg/cmd/server/main.go +++ b/pkg/cmd/server/main.go @@ -50,6 +50,12 @@ func main() { log.Info().Int("count", len(sign.App.Sites)).Msg("All configuration has been loaded.") } + // Preheat processes + log.Info().Msg("Preheating processes...") + sign.App.PreheatProcesses(func(total int, success int) { + log.Info().Int("requested", total).Int("succeed", success).Msgf("Preheat processes completed!") + }) + // Init hypertext server hypertext.RunServer( hypertext.InitServer(), diff --git a/pkg/sign/pm.go b/pkg/sign/pm.go index 988e28b..325b6dc 100644 --- a/pkg/sign/pm.go +++ b/pkg/sign/pm.go @@ -80,7 +80,7 @@ func (v *ProcessConfig) StopProcess() error { return nil } -func (v *RoadApp) PreheatProcesses() { +func (v *RoadApp) PreheatProcesses(callback func(total int, success int)) { var processes []*ProcessConfig for _, site := range v.Sites { for _, process := range site.Processes { @@ -90,7 +90,12 @@ func (v *RoadApp) PreheatProcesses() { } } + success := 0 for _, process := range processes { - process.BootProcess() + if process.BootProcess() == nil { + success++ + } } + + callback(len(processes), success) }