diff --git a/synced-pool.go b/synced-pool.go index ada2efa..c29b91e 100644 --- a/synced-pool.go +++ b/synced-pool.go @@ -343,6 +343,7 @@ func (p *SyncedPool) removeLocalGrain(id CartId) { func (p *SyncedPool) addRemoteHost(address string, remote *RemoteHost) error { known := make([]string, 0, len(p.remotes)) + for _, r := range p.remotes { known = append(known, r.Host) if r.Host == address { @@ -364,9 +365,11 @@ func (p *SyncedPool) addRemoteHost(address string, remote *RemoteHost) error { } log.Printf("Remote %s has %d grains\n", remote.Host, len(ids)) p.mu.Lock() + local := 0 + remoteNo := 0 for _, id := range ids { if p.local.grains[id] != nil { - log.Printf("Grain %s already exists locally, deleting\n", id) + local++ delete(p.local.grains, id) } grain, err := NewRemoteGrain(id, remote.Host) @@ -374,10 +377,12 @@ func (p *SyncedPool) addRemoteHost(address string, remote *RemoteHost) error { log.Printf("Error creating remote grain %s: %v\n", id, err) continue } + remoteNo++ p.remoteIndex[id] = grain } + log.Printf("Removed %d local grains, added %d remote grains\n", local, remoteNo) p.mu.Unlock() - p.Negotiate(known) + go p.Negotiate(known) }() return nil }