This commit is contained in:
11
main.go
11
main.go
@@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|||||||
@@ -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")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user