feat: remove inactive emphemeral machines when server starts; rename reaper to worker

This commit is contained in:
Johan Siebens
2024-02-03 09:04:33 +01:00
parent 9748955f18
commit 5e43014a09
2 changed files with 9 additions and 7 deletions
@@ -11,8 +11,8 @@ const (
inactivityTimeout = 30 * time.Minute inactivityTimeout = 30 * time.Minute
) )
func StartReaper(repository domain.Repository, sessionManager PollMapSessionManager) { func StartWorker(repository domain.Repository, sessionManager PollMapSessionManager) {
r := &reaper{ r := &worker{
sessionManager: sessionManager, sessionManager: sessionManager,
repository: repository, repository: repository,
} }
@@ -20,19 +20,20 @@ func StartReaper(repository domain.Repository, sessionManager PollMapSessionMana
go r.start() go r.start()
} }
type reaper struct { type worker struct {
sessionManager PollMapSessionManager sessionManager PollMapSessionManager
repository domain.Repository repository domain.Repository
} }
func (r *reaper) start() { func (r *worker) start() {
r.deleteInactiveEphemeralNodes()
t := time.NewTicker(ticker) t := time.NewTicker(ticker)
for range t.C { for range t.C {
r.reapInactiveEphemeralNodes() r.deleteInactiveEphemeralNodes()
} }
} }
func (r *reaper) reapInactiveEphemeralNodes() { func (r *worker) deleteInactiveEphemeralNodes() {
ctx := context.Background() ctx := context.Background()
now := time.Now().UTC() now := time.Now().UTC()
@@ -41,6 +42,7 @@ func (r *reaper) reapInactiveEphemeralNodes() {
if err != nil { if err != nil {
return return
} }
var removedNodes = make(map[uint64][]uint64) var removedNodes = make(map[uint64][]uint64)
for _, m := range machines { for _, m := range machines {
if now.After(m.LastSeen.Add(inactivityTimeout)) { if now.After(m.LastSeen.Add(inactivityTimeout)) {
+1 -1
View File
@@ -65,7 +65,7 @@ func Start(ctx context.Context, c *config.Config) error {
return logError(err) return logError(err)
} }
core.StartReaper(repository, sessionManager) core.StartWorker(repository, sessionManager)
serverUrl, err := url.Parse(c.ServerUrl) serverUrl, err := url.Parse(c.ServerUrl)
if err != nil { if err != nil {