2 Commits

Author SHA1 Message Date
max
53a780343f Fix scheduler by adding a wait group 2023-04-06 09:55:56 -05:00
max
8e4c5e3268 Fix wrong query for clearing 6-hour old sessions 2023-04-06 09:35:53 -05:00
2 changed files with 12 additions and 6 deletions

View File

@ -1,6 +1,9 @@
package app
import "time"
import (
"sync"
"time"
)
type Scheduled struct {
EveryReboot []func(app *App)
@ -35,11 +38,14 @@ func RunScheduledTasks(app *App, poolSize int, stop <-chan struct{}) {
}
// Set up task runners
var wg sync.WaitGroup
runners := make([]chan bool, len(tasks))
for i, task := range tasks {
runner := make(chan bool, poolSize)
runners[i] = runner
wg.Add(1)
go func(task Task, runner chan bool) {
defer wg.Done()
ticker := time.NewTicker(task.Interval)
defer ticker.Stop()
for {
@ -59,11 +65,11 @@ func RunScheduledTasks(app *App, poolSize int, stop <-chan struct{}) {
}(task, runner)
}
// Wait for termination
// Wait for all goroutines to finish
wg.Wait()
// Close channels
for _, runner := range runners {
for i := 0; i < cap(runner); i++ {
runner <- false
}
close(runner)
}
}

View File

@ -139,7 +139,7 @@ func ScheduledSessionCleanup(app *app.App) {
}
// Delete sessions older than 6 hours
_, err = app.Db.Exec(deleteSessionsOlderThan30Days)
_, err = app.Db.Exec(deleteSessionsOlderThan6Hours)
if err != nil {
log.Println("Error deleting 6 hour expired sessions from database")
log.Println(err)