diff --git a/synced-pool.go b/synced-pool.go index c3573a5..abec84b 100644 --- a/synced-pool.go +++ b/synced-pool.go @@ -448,7 +448,7 @@ func (p *SyncedPool) AddRemote(host string) error { Host: host, } go func() { - for range time.Tick(time.Second * 10) { + for range time.Tick(time.Second * 3) { var err error err = remote.Ping() @@ -481,9 +481,9 @@ func (p *SyncedPool) getGrain(id CartId, requestOwnership bool) (Grain, error) { remoteLookupCount.Inc() return remoteGrain, nil } - - go p.RequestOwnership(id) - + if requestOwnership { + go p.RequestOwnership(id) + } localGrain, err = p.local.GetGrain(id) if err != nil { return nil, err @@ -516,5 +516,10 @@ func (p *SyncedPool) Get(id CartId) (*CallResult, error) { if remoteGrain, ok := grain.(*RemoteGrain); ok { return remoteGrain.GetCurrentState() } + if localGrain, ok := grain.(*CartGrain); ok { + if len(localGrain.storageMessages) > 0 { + go p.RequestOwnership(id) + } + } return grain.GetCurrentState() }