diff --git a/data/1.prot b/data/1.prot index 9557f27..f8153e3 100644 Binary files a/data/1.prot and b/data/1.prot differ diff --git a/grain-pool.go b/grain-pool.go index ffeb779..114fba0 100644 --- a/grain-pool.go +++ b/grain-pool.go @@ -115,8 +115,8 @@ func (p *GrainLocalPool) GetGrains() map[CartId]*CartGrain { func (p *GrainLocalPool) GetGrain(id CartId) (*CartGrain, error) { var err error - p.mu.RLock() - defer p.mu.RUnlock() + // p.mu.RLock() + // defer p.mu.RUnlock() grain, ok := p.grains[id] grainLookups.Inc() if grain == nil || !ok { diff --git a/synced-pool.go b/synced-pool.go index 03c84d2..163dada 100644 --- a/synced-pool.go +++ b/synced-pool.go @@ -320,8 +320,8 @@ func (p *SyncedPool) Negotiate() { } func (p *SyncedPool) GetHealthyRemotes() []*RemoteHost { - p.mu.RLock() - defer p.mu.RUnlock() + // p.mu.RLock() + // defer p.mu.RUnlock() remotes := make([]*RemoteHost, 0, len(p.remotes)) for _, r := range p.remotes { if r.IsHealthy() { @@ -422,12 +422,14 @@ func (p *SyncedPool) AddRemote(host string) error { func (p *SyncedPool) getGrain(id CartId) (Grain, error) { var err error + p.mu.RLock() + defer p.mu.RUnlock() localGrain, ok := p.local.grains[id] if !ok { // check if remote grain exists - p.mu.RLock() + remoteGrain, ok := p.remoteIndex[id] - p.mu.RUnlock() + if ok { remoteLookupCount.Inc() return remoteGrain, nil