- DB type migrators are now in separate file, in preparation for full custom sql migration statements - Start work on handling failed outbound requests stored in the db
30 lines
849 B
Go
30 lines
849 B
Go
package cleaners
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/rs/zerolog/log"
|
|
|
|
"git.mstar.dev/mstar/linstrom/storage-new/dbgen"
|
|
)
|
|
|
|
const maxServerAge = time.Hour * 24 * 30 // One month
|
|
|
|
func init() {
|
|
cleanerBuilders = append(cleanerBuilders, buildKillDeadServers)
|
|
}
|
|
|
|
// Marks all servers where the last interaction time is older than maxServerAge
|
|
func tickKillDeadServers(now time.Time) {
|
|
_, err := dbgen.RemoteServer.Where(dbgen.RemoteServer.LastInteraction.Lt(now.Add(-maxServerAge)), dbgen.RemoteServer.IsSelf.Is(false)).
|
|
UpdateColumn(dbgen.RemoteServer.IsDead, true)
|
|
if err != nil {
|
|
log.Error().
|
|
Err(err).
|
|
Msg("Failed to mark servers without interaction for over a 30 days as dead")
|
|
}
|
|
}
|
|
|
|
func buildKillDeadServers() (onTick func(time.Time), name string, tickSpeed time.Duration) {
|
|
return tickKillDeadServers, "kill-dead-servers", time.Hour
|
|
}
|