From ebec6cb4a75ad8238fb7e9395d5f816d39829290 Mon Sep 17 00:00:00 2001 From: matst80 Date: Tue, 12 Nov 2024 20:08:21 +0100 Subject: [PATCH] require ownership --- synced-pool.go | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/synced-pool.go b/synced-pool.go index 48a70a5..34fd6db 100644 --- a/synced-pool.go +++ b/synced-pool.go @@ -412,9 +412,8 @@ func (p *SyncedPool) AddRemote(host string) error { return p.addRemoteHost(host, &remote) } -func (p *SyncedPool) getGrain(id CartId, requestOwnership bool) (Grain, error) { +func (p *SyncedPool) getGrain(id CartId) (Grain, error) { localGrain, ok := p.local.grains[id] - var err error if !ok { // check if remote grain exists p.mu.RLock() @@ -424,9 +423,13 @@ func (p *SyncedPool) getGrain(id CartId, requestOwnership bool) (Grain, error) { remoteLookupCount.Inc() return remoteGrain, nil } - if requestOwnership { - go p.RequestOwnership(id) + + err := p.RequestOwnership(id) + if err != nil { + log.Printf("Error requesting ownership: %v\n", err) + return nil, err } + localGrain, err = p.local.GetGrain(id) if err != nil { return nil, err @@ -437,7 +440,7 @@ func (p *SyncedPool) getGrain(id CartId, requestOwnership bool) (Grain, error) { } func (p *SyncedPool) Process(id CartId, messages ...Message) (*CallResult, error) { - pool, err := p.getGrain(id, true) + pool, err := p.getGrain(id) var res *CallResult if err != nil { return nil, err @@ -452,17 +455,10 @@ func (p *SyncedPool) Process(id CartId, messages ...Message) (*CallResult, error } func (p *SyncedPool) Get(id CartId) (*CallResult, error) { - grain, err := p.getGrain(id, false) + grain, err := p.getGrain(id) if err != nil { return nil, err } - 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() }