safing-portbase/database/dbmodule/maintenance.go
Daniel 402429cd70 Revamp module structure
- Add shutdown mechanics to module
- Adapt dbmodule to new mechanics
2019-08-09 16:45:43 +02:00

45 lines
938 B
Go

package dbmodule
import (
"time"
"github.com/safing/portbase/database"
"github.com/safing/portbase/log"
)
var (
maintenanceShortTickDuration = 10 * time.Minute
maintenanceLongTickDuration = 1 * time.Hour
)
func startMaintainer() {
module.AddWorkers(1)
go maintenanceWorker()
}
func maintenanceWorker() {
ticker := time.NewTicker(maintenanceShortTickDuration)
longTicker := time.NewTicker(maintenanceLongTickDuration)
for {
select {
case <-ticker.C:
err := database.Maintain()
if err != nil {
log.Errorf("database: maintenance error: %s", err)
}
case <-longTicker.C:
err := database.MaintainRecordStates()
if err != nil {
log.Errorf("database: record states maintenance error: %s", err)
}
err = database.MaintainThorough()
if err != nil {
log.Errorf("database: thorough maintenance error: %s", err)
}
case <-module.ShuttingDown():
module.FinishWorker()
return
}
}
}