From fffb1d20c50d97cd19ffc5547efa8696a0d2fa71 Mon Sep 17 00:00:00 2001 From: matst80 Date: Sat, 9 Nov 2024 23:26:55 +0100 Subject: [PATCH] more shit --- main.go | 11 +++++---- synced-pool.go | 65 +++++++++++++++++++++++++------------------------- 2 files changed, 39 insertions(+), 37 deletions(-) diff --git a/main.go b/main.go index ff28fd1..499c575 100644 --- a/main.go +++ b/main.go @@ -166,12 +166,13 @@ func main() { } go rpcHandler.Serve() - saveTimer := time.NewTicker(time.Second * 5) go func() { - <-saveTimer.C - err := app.Save() - if err != nil { - log.Printf("Error saving: %v\n", err) + for range time.Tick(time.Minute) { + log.Printf("Saving...") + err := app.Save() + if err != nil { + log.Printf("Error saving: %v\n", err) + } } }() diff --git a/synced-pool.go b/synced-pool.go index d1bb003..b20b317 100644 --- a/synced-pool.go +++ b/synced-pool.go @@ -53,49 +53,50 @@ func NewSyncedPool(local *GrainLocalPool, hostname string, d Discovery) (*Synced remoteIndex: make(map[CartId]*RemoteGrainPool), } - go func(pingTimer *time.Ticker) { + go func() { for { - <-pingTimer.C - for _, r := range pool.remotes { - err := DoPing(r) - if err != nil { - r.MissedPings++ - log.Printf("Error pinging remote %s: %v\n, missed pings: %d", r.Host, err, r.MissedPings) - if r.MissedPings > 3 { - log.Printf("Removing remote %s\n", r.Host) - go pool.RemoveHost(r) - //pool.remotes = append(pool.remotes[:i], pool.remotes[i+1:]...) + for range time.Tick(time.Second * 2) { + for _, r := range pool.remotes { + err := DoPing(r) + if err != nil { + r.MissedPings++ + log.Printf("Error pinging remote %s: %v\n, missed pings: %d", r.Host, err, r.MissedPings) + if r.MissedPings > 3 { + log.Printf("Removing remote %s\n", r.Host) + go pool.RemoveHost(r) + //pool.remotes = append(pool.remotes[:i], pool.remotes[i+1:]...) + } + } else { + r.MissedPings = 0 } - } else { - r.MissedPings = 0 } + connectedRemotes.Set(float64(len(pool.remotes))) } - connectedRemotes.Set(float64(len(pool.remotes))) } - }(time.NewTicker(time.Second)) + }() if d != nil { - go func(discoveryTimer *time.Ticker) { - <-discoveryTimer.C - log.Printf("Looking for new nodes") - hosts, err := d.Discover() - if err != nil { - log.Printf("Error discovering hosts: %v", err) - } - for _, h := range hosts { - if h == hostname { - continue - } - log.Printf("Discovered host %s", h) - - err := pool.AddRemote(h) + go func() { + for range time.Tick(time.Second * 5) { + log.Printf("Looking for new nodes") + hosts, err := d.Discover() if err != nil { - log.Printf("Error adding remote %s: %v", h, err) + log.Printf("Error discovering hosts: %v", err) + } + for _, h := range hosts { + if h == hostname { + continue + } + log.Printf("Discovered host %s", h) + + err := pool.AddRemote(h) + if err != nil { + log.Printf("Error adding remote %s: %v", h, err) + } } } - - }(time.NewTicker(time.Second * 5)) + }() } else { log.Printf("No discovery, waiting for remotes to connect") }