more shit
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 1m49s

This commit is contained in:
matst80
2024-11-09 23:26:55 +01:00
parent f89130d5f9
commit fffb1d20c5
2 changed files with 39 additions and 37 deletions

11
main.go
View File

@@ -166,12 +166,13 @@ func main() {
} }
go rpcHandler.Serve() go rpcHandler.Serve()
saveTimer := time.NewTicker(time.Second * 5)
go func() { go func() {
<-saveTimer.C for range time.Tick(time.Minute) {
err := app.Save() log.Printf("Saving...")
if err != nil { err := app.Save()
log.Printf("Error saving: %v\n", err) if err != nil {
log.Printf("Error saving: %v\n", err)
}
} }
}() }()

View File

@@ -53,49 +53,50 @@ func NewSyncedPool(local *GrainLocalPool, hostname string, d Discovery) (*Synced
remoteIndex: make(map[CartId]*RemoteGrainPool), remoteIndex: make(map[CartId]*RemoteGrainPool),
} }
go func(pingTimer *time.Ticker) { go func() {
for { for {
<-pingTimer.C for range time.Tick(time.Second * 2) {
for _, r := range pool.remotes { for _, r := range pool.remotes {
err := DoPing(r) err := DoPing(r)
if err != nil { if err != nil {
r.MissedPings++ r.MissedPings++
log.Printf("Error pinging remote %s: %v\n, missed pings: %d", r.Host, err, r.MissedPings) log.Printf("Error pinging remote %s: %v\n, missed pings: %d", r.Host, err, r.MissedPings)
if r.MissedPings > 3 { if r.MissedPings > 3 {
log.Printf("Removing remote %s\n", r.Host) log.Printf("Removing remote %s\n", r.Host)
go pool.RemoveHost(r) go pool.RemoveHost(r)
//pool.remotes = append(pool.remotes[:i], pool.remotes[i+1:]...) //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 { if d != nil {
go func(discoveryTimer *time.Ticker) { go func() {
<-discoveryTimer.C for range time.Tick(time.Second * 5) {
log.Printf("Looking for new nodes") log.Printf("Looking for new nodes")
hosts, err := d.Discover() 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)
if err != nil { 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 { } else {
log.Printf("No discovery, waiting for remotes to connect") log.Printf("No discovery, waiting for remotes to connect")
} }