mirror of
https://github.com/jsiebens/ionscale.git
synced 2026-03-31 15:07:49 +01:00
feat: remove inactive emphemeral machines when server starts; rename reaper to worker
This commit is contained in:
@@ -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)) {
|
||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user