diff --git a/synced-pool.go b/synced-pool.go index d839343..bf65877 100644 --- a/synced-pool.go +++ b/synced-pool.go @@ -127,11 +127,19 @@ func NewSyncedPool(local *GrainLocalPool, hostname string, d Discovery) (*Synced log.Printf("Error adding undiscovered remote %s: %v\n", h, err) } } - for _, r := range pool.remotes { + for i, r := range pool.remotes { err := DoPing(r.connection) 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) + + pool.remotes = append(pool.remotes[:i], pool.remotes[i+1:]...) + + } + } else { + r.MissedPings = 0 } } }()